QiblaFree Help

30 articles · free prayer times, Qibla direction, azan alarm, Qur'an, Hijri calendar and hadith

← Open the app

Getting started

Finding your way around

Everything lives on one scrolling page.

A tab strip near the top gives you three ways to set your location🌐 Detect from IP, 🏙 Country / State / City, and 🗺 Coordinates. They all feed the same result, so switching between them only changes how you enter a place, not what you see below.

Prayer times, the Qibla compass, the Qur'an, the Hijri calendar and the hadith collections are always below the tabs, whichever one is open.

Settings — language, calculation method, Asr school, 24-hour format — are in the sidebar on the left. On a narrow screen, open it with the arrow in the top-left corner.

Support sits at the bottom of the sidebar, with ❓ Help and 🐛 Bug Report. Both open over the page rather than replacing it, so the prayer times and the azan countdown keep running behind them. Each window fits your screen and scrolls inside its own frame — the heading and the stay in place at the top, so you can close it from anywhere in the list rather than scrolling back up first. On a phone the sidebar starts tucked away — tap the » arrow in the top-left corner to slide it out.

There is also a plain, printable version of this guide at /help on the site, if you would rather read it outside the app or link someone to a specific article.

Open this topic in the app →

Light and dark mode

The app follows whatever theme your browser or device is set to, so it turns dark automatically at night if your system does.

To choose a theme yourself, open the menu at the top right, pick Settings, and set Appearance to Light, Dark, or Use system setting. The change applies straight away and sticks for that browser.

If text looks too faint to read, it is worth checking which theme you are actually in — a page that renders well in one theme can be washed out in the other. Every piece of text in the app is meant to stay readable in both. If something still looks too pale, that is a bug worth reporting: use 🐛 Bug Report in the Support section and say which theme you were in and which section of the page it was, and it will get fixed.

Arabic text, hadith narrations and Qur'an translations always use the theme's full-strength text colour. Captions, timestamps and helper lines are deliberately a little softer so they stay out of the way — but they should still be comfortable to read.

Open this topic in the app →

Using the app without a connection

If your connection drops — or you open the app with no connection at all — you get a small offline page showing prayer times for today, the place they are for, and the Qibla direction, calculated on your device and needing nothing from the network.

It switches over by itself. If you're using the app and lose signal, it waits a couple of seconds to be sure it isn't a blip, then shows the offline page. When the connection comes back it returns to the app on its own. You don't need to reload anything.

That covers the situations that actually come up: a basement prayer room, a plane, a patchy signal, travelling without roaming.

If the azan alarm is switched on, the app stays put instead — it shows a gold bar across the top rather than switching to the offline page, because navigating away would kill the alarm. See "The azan alarm without a connection".

About two months of times are saved ahead. Every time you load the app with a connection, it quietly saves the current month and the next one to your device — around sixty days. So the offline page shows the times for today, whichever day that turns out to be, not the times from whenever you last had signal. The page tells you the last date it holds.

The saved times match your location and your calculation method at the time they were saved. Change either one and the next online visit replaces them.

What you get offline

What you don't

The clock it uses is the location's, not your phone's. If you looked up Makkah from Chicago, the offline page shows Makkah's day and highlights the next prayer there. That also means it stays right if you travel after saving.

Why the whole app can't work offline. The app is streamed from the server over a live connection rather than being a bundle of files sitting on your device. There is no way to keep that running without a network, so rather than pretend, it hands you the things that are genuinely useful and says plainly that it is offline.

On iPhone and iPad, add the app to your Home Screen. Safari clears saved site data after seven days of not visiting, which would erase your saved times; Home Screen apps are exempt. See the article on installing.

Open this topic in the app →

Setting your location

Everything on the page depends on your location. There are three ways to set it:

Detect from IP — one click, approximate. Resolves your rough position from your public IP address. Good enough for prayer times in most cases, but a VPN or a mobile network can place you in the wrong city.

Country / State / City — the most reliable. Enter a country (name, 2-letter code like US, or dial code like +44), optionally a state or province, then a city. Press Enter or click Search — both run exactly the same search. Adding or changing the state re-runs it, so narrowing Barrington down to Illinois takes one field, not a fresh search. If several places still match, you'll get a list to choose from.

Coordinates — type latitude and longitude directly, to four decimal places. Use this when you know exactly where you are.

Your choice is remembered in a cookie on your own device, so the app returns to the same place next visit.

Open this topic in the app →

Why are my prayer times different from my mosque?

Almost always the calculation method. Different authorities use different sun angles for Fajr and Isha, so their times legitimately differ — sometimes by half an hour.

Open the sidebar and set Calculation method to whichever your local mosque follows. Twelve are available: ISNA, Muslim World League, Umm Al-Qura, Egyptian General Authority, Karachi, Gulf Region, Kuwait, Qatar, Singapore (MUIS), Turkey (Diyanet), and two Shia (Ja'fari) methods — see below.

Also check Asr juristic method. The Hanafi Asr falls noticeably later in the afternoon than the Standard (Shafi'i, Maliki, Hanbali) calculation.

If times are off by a whole day rather than minutes, that's a timezone issue — please report it.

Open this topic in the app →

Shia (Ja'fari) prayer times

Two Shia methods are in the Calculation method list in the sidebar:

The difference you will notice most is Maghrib. The other methods put it at sunset. The Ja'fari calculation waits until the sun is about 4° below the horizon — when the redness has left the eastern sky — which is roughly 13 to 25 minutes after sunset, depending on your latitude and the time of year. Further from the equator, the gap is wider.

The azan alarm follows whichever method you pick, so it will sound at the later Maghrib automatically.

Asr needs no change. Ja'fari uses the same shadow ratio as the Shafi'i, Maliki and Hanbali schools, so leave Asr juristic method on Standard. The Hanafi setting is not the Shia position.

Midnight is calculated differently too. Both Shia methods use the Ja'fari midnight — the midpoint between sunset and Fajr, rather than solar midnight. This appears under All calculated times, and it is the point at which Isha time ends.

Prayers are shown separately rather than combined. If you combine Dhuhr with Asr, or Maghrib with Isha, use the earlier time of each pair.

Open this topic in the app →

Reading the prayer times table

The five daily prayers plus sunrise are listed in order. The prayer you're currently in is highlighted, and the next one carries a NEXT badge.

The panel refreshes itself every 30 seconds, so the badge stays correct even if you leave the tab open. When the date rolls over past midnight it fetches the new day's times automatically.

Times are shown in the timezone of the place you looked up, not your own. Checking Jakarta's times from Chicago shows you Jakarta's clock.

Toggle 24-hour format in the sidebar to switch between 4:58 PM and 16:58.

Open All calculated times below the table for Imsak, Sunset, Midnight, and the first and last thirds of the night.

Open this topic in the app →

Azan alarm

Turning on the azan alarm

Switch on Enable automatic Azan at prayer times under the prayer table. The call to prayer will then play at each prayer time, and a countdown to the next one appears.

Press Test Azan once after enabling. Browsers block audio until you've interacted with the page, and that single click is what grants permission for the session. Without it the alarm will stay silent.

Use Stop Azan to silence playback in progress.

The alarm follows the looked-up location's clock, so it's correct whether you're checking your own city or somewhere else.

Open this topic in the app →

The azan didn't play

Work through these in order:

  1. Is the toggle on? The status line under the countdown says whether the alarm is active.
  2. Did you press Test Azan at least once? This is the most common cause. Browsers refuse to play audio until the user interacts with the page.
  3. Is your browser or system muted? The app shows a muted warning when it detects this, but it can't always tell.
  4. Was the tab in the background? Browsers throttle hidden tabs. The alarm tolerates a few minutes of delay to compensate, but a heavily throttled tab can still miss.
  5. Was the machine asleep? Nothing running in a browser can fire while a laptop is suspended. See the article on alarms while your computer sleeps.
Open this topic in the app →

Alarms while your computer is asleep

The in-app alarm cannot fire while your machine is asleep or hibernating. No process is running to notice the time — this is a limitation of every browser-based alarm, not a bug.

It also won't play a late azan when you wake the machine hours later, which is deliberate: a stale call to prayer is worse than none.

If you need an alarm that wakes the machine, the project includes a Windows Task Scheduler setup in the azan-alarm folder. It creates one wake-capable task per prayer, fetches the day's times automatically, and plays the adhan from a local cache. Wake timers must be enabled in your power plan — the installer checks and tells you how.

For prayer reminders you genuinely depend on, a phone app remains the right tool. Treat this app as a companion on a machine you're actively using.

Open this topic in the app →

The azan alarm without a connection

The alarm keeps working when the connection drops, but it is not the same alarm, and the differences matter enough to be worth knowing before you rely on it.

What stays the same. The times it fires at, and the recitation it plays. The alarm does its own arithmetic from the times and the timezone it was given, so losing the connection does not shift anything.

The page has to stay open. Online, you can navigate away and come back. Offline, the alarm is the open page — there is no server to rebuild it from. Reloading, closing the tab, or following a link ends it. If you reload while still offline you land on the offline page, which shows prayer times and Qibla but has no alarm at all.

A gold bar appears across the top saying you are offline and the alarm is still running. That bar is the sign it is working. Without an alarm armed, losing the connection takes you to the offline page instead — the alarm is the only reason the app stays put.

The times stop refreshing. Online, the app re-fetches and rolls over to the next day by itself. Offline it keeps the day it had when the signal went. Past local midnight those are yesterday's times, and the alarm will fire at yesterday's minutes. For a night or an afternoon the drift is nil to a couple of minutes; across a whole day it is real. Reconnect once and it corrects itself.

The rest of the app is frozen. Buttons, the language picker, the search — all of it needs the server. They will not respond until the connection returns. This is expected, not a fault.

The recitation has to be stored on your device. If the site is serving the adhan from its own address, your browser keeps a copy the first time you switch the alarm on, and that copy is what plays offline. If it is still being fetched from an outside service, the alarm will reach the right moment and be silent. You can check by enabling the alarm once while online and pressing the test button — if it plays, it has been saved.

It cannot wake a sleeping device. No web page can. A locked iPhone suspends the page entirely; an Android phone with the screen off may delay it by a minute or two. See the article on alarms while your computer is asleep, and the azan-alarm folder in the project for a Windows alarm that can wake the machine.

In short: offline, the alarm is a thing you leave running, not a thing that runs by itself.

Open this topic in the app →

Who recites the azan?

The adhan is recited by Mishary Rashid Alafasy, supplied by AlAdhan.

AlAdhan hosts several recordings; this app uses their a9 file. Others in their catalogue are credited to Ahmad al-Nafees, Hafiz Mustafa Özcan and Mansour Al-Zahrani.

Open this topic in the app →

Qibla

Using the Qibla compass

The dial shows the direction of the Kaaba from your location, in degrees clockwise from true north, with the great-circle distance in kilometres and miles.

Tap Enable live compass to have the dial rotate with your phone. On iPhone you'll be asked for motion-sensor permission first.

The printed bearing is always the trustworthy number. The live dial is a convenience that depends on your device's magnetometer.

Open this topic in the app →

The live compass isn't working

Several possibilities, in rough order of likelihood:

You're on a laptop or desktop. This is by far the most common reason. A live compass needs a magnetometer, and phones and tablets have one while clamshell laptops and desktops almost never do. Some 2-in-1 convertibles do. If the app says No compass sensor on this device, that is what has happened, and no browser setting will change it — the machine has no sensor to read.

The bearing above the dial is still correct. Face that many degrees clockwise from north, using a phone compass or a physical one.

The site isn't on HTTPS. iOS refuses motion-sensor permission outside a secure context, so the live compass won't start over plain HTTP. The static bearing still works.

Your browser blocks motion sensors. Some privacy-focused browsers restrict the orientation API on desktop. Brave has experimented with disabling it by default. On a machine without a magnetometer this makes no practical difference, since there is nothing to read either way.

Your compass needs calibrating. If the app says so, wave the device in a figure-8 pattern for a few seconds and try again. It tells you rather than pointing confidently in the wrong direction.

Your browser reports tilt but not true north. Some browsers — Firefox on Android among them — expose orientation without a north reference. The app detects this and says so instead of showing a misleading needle.

You denied the permission. Reload the page and tap the button again.

It worked, then stopped. This was a real bug, now fixed. The compass listener lived inside a component that the app rebuilds whenever anything on the page changes, so the listener was thrown away — while the Enable button, which lives outside that component, stayed hidden. The compass went quiet with no way to restart it short of reloading. The app now remembers that you switched it on and re-attaches by itself, and if the sensor genuinely stops responding the button comes back so you can tap it again.

One note on how this is detected: a browser exposing the orientation API tells you nothing about whether the machine has a sensor. Desktop Chromium reports the API as available, fires a single reading with every value empty, then goes quiet. Older builds took that as success and showed Live compass active over a needle that never moved. The app now waits for a reading with real numbers in it before claiming anything, and gives the button back if none arrives.

Open this topic in the app →

Magnetic north versus true north

Your phone's compass reads magnetic north. The Qibla bearing is calculated from true north. The gap between them — magnetic declination — varies by location: roughly 27° in Cape Town, 24° in Greenland, close to zero in parts of the Americas.

Mixing the two produces a needle that is confidently, silently wrong. This app corrects for declination, so the rotating dial and the printed bearing agree.

If the correction data isn't available on the server, the app says so in a note beneath the dial rather than pretending.

Open this topic in the app →

Qur'an

Reading with a translation and tafsir

Pick a surah to read the Arabic alongside a translation in your language.

To add commentary, choose a tafsir language, then a tafsir edition. Several editions are available per language.

Translations, tafsir and audio all come from alquran.cloud. No account or key is needed.

Open this topic in the app →

Ayah-by-ayah recitation

Choose a reciter and a playback speed, then press play. The player moves through the surah ayah by ayah.

Each ayah is a separate audio file, so a naive player leaves a gap between every verse. This one pre-loads the next ayah while the current one is still playing, which keeps recitation continuous.

Click any ayah in the text to jump straight to it.

If the player appears but nothing plays. Not every reciter on the list has individual-ayah recordings — some are whole-surah files only. The app now checks the first ayah when you load a surah and tells you above the player if that reciter has nothing to play, so switch reciter (Mishary Alafasy has the most complete coverage) or set it to (No audio). Any playback error is also reported in the small line directly under the player.

Open this topic in the app →

Calendar

Using the Hijri calendar

A month-by-month Islamic calendar shown next to Gregorian dates, with today highlighted and Islamic holidays marked.

Switch between the Umm al-Qura and HJCoSA calculation methods — they can differ by a day, and communities follow different authorities.

Browse to any month and year, not just the current one.

Open this topic in the app →

Hadith

Browsing hadith collections

Two collections, in Arabic with English translation:

Nothing downloads until you ask. Under the book selector there is a Hadith text setting, Disabled by default. The size of each book is shown next to its name so you can see what you are committing to before you choose — these files have no server-side pagination, so a book arrives whole or not at all.

Set it to Enabled to load the book you picked. After that it is cached for a day, so switching chapters costs nothing more.

If you are on mobile data, Muwatta Malik is a quarter of the size of Bukhari and a reasonable place to start.

Open this topic in the app →

Languages

Changing the language

Use the Language selector in the sidebar. The app also guesses from your browser's language on first visit.

A hollow ring — — before a language name means that language has no translation yet and the app will show English if you pick it. The ten marked entries are listed in the next article.

42 languages are available. Right-to-left languages — Arabic, Urdu, Hebrew, Pashto, Sindhi, Uyghur and Punjabi (Shahmukhi) — flip the entire layout, not just the text.

Your other settings survive a language change: switching from English to French won't reset your calculation method or coordinates.

Open this topic in the app →

Why is some text still in English?

Two reasons.

Ten of the 42 languages aren't translated yet — Cherokee, Ojibwe, Apache, Inuktitut, Balochi, Burmese, Yi, Yanomami, Dai and Naxi. They carry a in the language selector, and picking one shows English. So selecting Cherokee gets you English, not Cherokee — the only Cherokee in the app is the name of the language itself, ᏣᎳᎩ, in the selector.

To be clear about why: this is a gap in this project's translations, not a limitation of those languages. Every one of them has an established writing system — Cherokee has the syllabary Sequoyah devised around 1821, Burmese an abugida attested from 1035 and standardised by commission in 1963, Yi and Inuktitut their own syllabaries, Dai the New Tai Lue script, Naxi a Latin orthography standardised in 1957. Translations are very welcome; the strings live in one small JSON file per language.

Help articles are English in every language. The section headings and search box are translated, but the articles themselves are not. Keeping ~30 articles current in 42 languages isn't sustainable, and stale help is worse than help in a second language.

Open this topic in the app →

Punjabi in both scripts

Punjabi appears twice in the selector, as two separate languages rather than one text run through a script converter:

Each has its own vocabulary and register, which is why they're translated independently.

Open this topic in the app →

Installing

Installing the app on your phone or desktop

The app can be installed like a native app, giving you a Kaaba icon and a full-screen window with no browser chrome.

Android / Chrome / Edge — look for Install in the address bar or the browser menu.

iPhone / iPad — Safari → Share → Add to Home Screen.

Desktop — an install icon appears in the address bar in Chrome and Edge.

The install option only appears over HTTPS. On a plain HTTP address, browsers won't offer it.

On iPhone and iPad, installing matters more than it looks. Safari clears saved website data after seven days in which you open Safari but don't visit the site — which would take your saved prayer times with it. Web apps added to the Home Screen are exempt from that, so installing is what makes the offline page dependable on iOS. On Android there is no such rule either way.

Open this topic in the app →

Privacy

What data does the app store?

There is no account, no signup and no database. Nothing you do here is stored on a server.

One cookie, qiblafree_prefs, is written on your own device. It holds your chosen language, your displayed location and coordinates, today's prayer times and a timestamp. It contains no IP address, no device fingerprint and no identifier. Clearing your browser data removes it.

One stored item, qiblafree_calendar, holds about two months of prayer times for your location — roughly 4 KB — so the offline page can show today's times rather than whichever day you last had signal. It is prayer times and a place name, nothing else, and it never leaves your device. It is replaced whenever you load the app with a connection, and clearing your browser data removes it.

Location is used to calculate times and direction and is not transmitted anywhere except to the prayer-time and geocoding services that need it to answer the query.

A service worker is registered to provide the offline page. It stores the offline page, and — only if you switch the azan alarm on — a copy of the call-to-prayer audio, so the alarm can still sound with no connection. Nothing else. It deliberately does not cache the app itself, so it can never serve you a stale version, and it records nothing about you. Loading the site with ?sw=off on the end removes it and everything it has stored.

No advertising, no analytics, no third-party trackers.

Almost nothing is loaded from other companies' servers. The Arabic typeface is served from this site rather than from Google Fonts, so your browser doesn't announce your visit to a third party just to render Arabic. The call-to-prayer audio is served from this site too where a local copy is installed; where it is not, it comes from AlAdhan. Beyond that the only outside request your browser makes is for the Qur'an recitation, and only if you actually play it.

If you file a bug report, the three checkboxes control exactly what is attached. Unticking one genuinely removes that data rather than just hiding it.

Open this topic in the app →

Where does the data come from?

All free, all without an API key:

ServiceProvides
AlAdhanPrayer times and the Hijri calendar
Nominatim, Photon, Open-MeteoGeocoding — queried in parallel, first answer wins
alquran.cloudQur'an text, translations, tafsir and recitation
hadith-jsonSahih al-Bukhari and Muwatta Malik
ipwho.isApproximate location from IP address

The adhan recording is by Mishary Rashid Alafasy, via AlAdhan.

Open this topic in the app →

Troubleshooting

The page is stuck on "Connecting…"

This is a connection problem between your browser and the server, not something you've done.

Try a hard refresh first — Ctrl+F5 on Windows, Cmd+Shift+R on Mac.

If it persists across refreshes and other sites work, the server likely needs attention. Please report it.

Open this topic in the app →

"Could not find" when searching for a city

Things to try:

If the message says the location service couldn't be reached rather than that the city wasn't found, that's a temporary network problem — wait a minute and retry. The app distinguishes between the two deliberately.

Older builds had a real bug here worth knowing about if you hit it: pressing Enter ran a different search from clicking Search. Enter ignored the state field and did not translate a country name into its code, so United States failed outright while US worked, and Barrington came back as three different Barringtons instead of the one in Illinois. Both now run the same search.

Open this topic in the app →

Detect from IP gives the wrong city

IP geolocation is approximate by nature. It commonly resolves to your ISP's regional hub rather than your actual town, and a VPN will place you wherever the exit node is.

For prayer times the difference is usually a minute or two, which most people can live with. If you want it exact, use the Country / State / City tab or enter coordinates.

If it returns somewhere wildly wrong — a different continent — that's worth reporting.

Open this topic in the app →

A section shows an error but the rest works

Each section fetches from a different service, so one can fail while the others are fine. This is by design — a Qur'an API outage shouldn't take down your prayer times.

Refresh the page. If it persists for more than an hour, the upstream service is likely down and it will recover on its own.

The hadith section in particular downloads a large file on first use; on a slow connection it can time out. Muwatta Malik is much smaller than Bukhari.

Open this topic in the app →

Reporting a problem

Open 🐛 Bug Report — it is in the Support section at the bottom of the sidebar; on a phone, open the sidebar first with the » arrow in the top-left corner. Pick an issue type and severity, describe what happened, and add steps to reproduce if you can.

Three checkboxes control what's attached: device and browser info, current prayer times, and current location. Unticking one genuinely removes that data from what's sent.

The email field is optional and only used to follow up. If reports go to a public issue tracker, your address is withheld from the public post.

The most useful reports say what you expected, what happened instead, and which language and location you were using.

If you were reading Help when you hit the problem, there is a 🐛 Bug Report button at the bottom of the Help window that takes you straight there.

Open this topic in the app →