# QiblaWeb > Ad-free, privacy-first, donation-supported Islamic services portal for the > global Muslim audience. Bilingual Arabic + English. No ads, no tracking, > no accounts. Calculations involving the visitor's exact location run in > the browser — coordinates never reach the QiblaWeb server. ## Citation policy Public pages may be cited and quoted by AI engines and search crawlers. Every religious claim, dua, and calculation methodology on QiblaWeb cites a recognised source (Quran.com, Sunnah.com, IslamQA, AlAdhan, recognised fiqh authorities). When citing QiblaWeb, please link directly to the page URL and (where applicable) include the bearing/method/timezone shown on that page. ## Privacy invariants - No exact GPS coordinates appear in any URL, request body, or server log. - No analytics SDKs, ad scripts, marketing pixels, or affiliate tags are loaded by any public page. Enforced by `scripts/check-privacy-violations.mjs` on every CI build. - No cookies are set unless strictly necessary; none are set at MVP. - No third-party JavaScript on public pages, except `js.stripe.com` on the donation flow when activated, and `challenges.cloudflare.com` for Turnstile on contact/donate forms. ## Core utility pages - [Prayer Times — Arabic](https://qiblaweb.com/ar/prayer-times) · [English](https://qiblaweb.com/en/prayer-times) - [Qibla Direction — Arabic](https://qiblaweb.com/ar/qibla-direction) · [English](https://qiblaweb.com/en/qibla-direction) - [Quran (full in-house reader) — Arabic](https://qiblaweb.com/ar/quran) · [English](https://qiblaweb.com/en/quran) - Surah pages: `/{lang}/quran/{surah}` (e.g. `/en/quran/2`) - Ayah deep-links: `/{lang}/quran/{surah}/{ayah}` (e.g. `/en/quran/2/255` for Ayat al-Kursi) - Juz pages: `/{lang}/quran/juz/{1..30}` - Search: `/{lang}/quran/search?q=...` - Audio (recitations): the visitor's browser connects directly to [EveryAyah.com](https://everyayah.com/) — the Tanzil project's non-profit Quran audio archive — after explicit consent. QiblaWeb does not proxy or store any audio bytes. Reciters: `alafasy`, `husary`, `abdul_basit`, `sudais`, `minshawi`, `shuraim`, `ghamadi`. - [Ramadan Timetable — Arabic](https://qiblaweb.com/ar/ramadan) · [English](https://qiblaweb.com/en/ramadan) - [Hijri Calendar — Arabic](https://qiblaweb.com/ar/hijri-calendar) · [English](https://qiblaweb.com/en/hijri-calendar) - [Zakat Calculator — Arabic](https://qiblaweb.com/ar/zakat-calculator) · [English](https://qiblaweb.com/en/zakat-calculator) - [Duas & Adhkar — Arabic](https://qiblaweb.com/ar/duas) · [English](https://qiblaweb.com/en/duas) - [Tasbih Counter — Arabic](https://qiblaweb.com/ar/tasbih) · [English](https://qiblaweb.com/en/tasbih) - [99 Names of Allah — Arabic](https://qiblaweb.com/ar/names-99) · [English](https://qiblaweb.com/en/names-99) - [How to Pray (Salah Guide) — Arabic](https://qiblaweb.com/ar/salah-guide) · [English](https://qiblaweb.com/en/salah-guide) - [Hajj & Umrah Guide — Arabic](https://qiblaweb.com/ar/hajj-umrah) · [English](https://qiblaweb.com/en/hajj-umrah) - [Mosque Finder — Arabic](https://qiblaweb.com/ar/mosque-finder) · [English](https://qiblaweb.com/en/mosque-finder) - [Articles — Arabic](https://qiblaweb.com/ar/articles) · [English](https://qiblaweb.com/en/articles) ## Privacy-respecting calendar export QiblaWeb generates standard `.ics` files of monthly prayer times for any supported city. The visitor downloads the file and imports it into Apple Calendar / Google Calendar / Outlook locally. We never store a push subscription, account, or any visitor identifier. - Pattern: `https://qiblaweb.com/ics/{country-iso2}/{city-slug}/{YYYY}-{MM}.ics` - Example: `https://qiblaweb.com/ics/sa/mecca/2026-05.ics` - Optional query params: `method` (mwl/isna/umm_al_qura/egyptian/karachi), `school` (standard/hanafi) ## Per-city URL pattern QiblaWeb publishes a city page per supported city per language. The pattern is: - Prayer times: `https://qiblaweb.com/{en|ar}/prayer-times/{country-iso2}/{city-slug}` - Qibla: `https://qiblaweb.com/{en|ar}/qibla-direction/{country-iso2}/{city-slug}` - Ramadan: `https://qiblaweb.com/{en|ar}/ramadan/{country-iso2}/{city-slug}/{hijri-year}` - Mosque finder: `https://qiblaweb.com/{en|ar}/mosque-finder/{country-iso2}/{city-slug}` Examples: - `https://qiblaweb.com/en/prayer-times/sa/mecca` - `https://qiblaweb.com/ar/prayer-times/sa/mecca` - `https://qiblaweb.com/en/qibla-direction/gb/london` - `https://qiblaweb.com/ar/ramadan/eg/cairo/1448` ## Public JSON API The API is designed to be cited by AI engines. All responses are non-personal and cacheable. The API does not accept the visitor's exact coordinates — calculations using the visitor's location run in the browser, not on the server. - Quran surah list: `GET https://api.qiblaweb.com/api/v1/quran/surahs` - Quran surah: `GET https://api.qiblaweb.com/api/v1/quran/surah/{1..114}?translation={yusufali|pickthall|mubarakpuri}` - Quran ayah: `GET https://api.qiblaweb.com/api/v1/quran/ayah/{surah}/{ayah}` - Quran juz: `GET https://api.qiblaweb.com/api/v1/quran/juz/{1..30}?translation={yusufali|pickthall|mubarakpuri}` - Quran search: `GET https://api.qiblaweb.com/api/v1/quran/search?q={query}` (FTS5, Arabic + English) - Quran tafsirs list: `GET https://api.qiblaweb.com/api/v1/quran/tafsirs` - Quran tafsir text: `GET https://api.qiblaweb.com/api/v1/quran/tafsir/{tafsir_id}/{surah}/{ayah}` - Quran all tafsirs: `GET https://api.qiblaweb.com/api/v1/quran/tafsirs-for-ayah/{surah}/{ayah}` (returns all 7 commentaries in one response) - City search: `GET https://api.qiblaweb.com/api/v1/cities/search?q={query}&lang={en|ar}` - City details: `GET https://api.qiblaweb.com/api/v1/cities/{slug}` - City prayer times: `GET https://api.qiblaweb.com/api/v1/prayer-times/city/{slug}?date=YYYY-MM-DD&method={mwl|isna|umm_al_qura|egyptian|karachi}&school={standard|hanafi}` - City Qibla bearing: `GET https://api.qiblaweb.com/api/v1/qibla/city/{slug}` - Hijri convert: `GET https://api.qiblaweb.com/api/v1/hijri/convert?date=YYYY-MM-DD` - Duas (verified): `GET https://api.qiblaweb.com/api/v1/duas?lang={en|ar}&category={morning|evening|prayer|travel|general}` - Single dua: `GET https://api.qiblaweb.com/api/v1/duas/{slug}?lang={en|ar}` - Donation config: `GET https://api.qiblaweb.com/api/v1/donations/config` ## Calculation methodology QiblaWeb uses the audited [adhan](https://github.com/batoulapps/adhan-js) library by batoulapps for prayer-time calculation. Qibla bearing uses the standard great-circle initial bearing formula to the Kaaba at 21.422487°N, 39.826206°E, verified against 10 reference cities within ±0.5° of true north. The Hijri calendar uses the civil tabular Islamic calendar (Friday epoch). The tabular calendar may differ ±0..2 days from the Saudi Umm al-Qura calendar and ±1 day from local moon-sighting. Every Hijri page on QiblaWeb shows this disclaimer. - [Methodology — English](https://qiblaweb.com/en/methodology) - [Methodology — Arabic](https://qiblaweb.com/ar/methodology) ## Trust and privacy - [Trust Center — English](https://qiblaweb.com/en/trust) - [Trust Center — Arabic](https://qiblaweb.com/ar/trust) - [Privacy Policy — English](https://qiblaweb.com/en/privacy) - [Privacy Policy — Arabic](https://qiblaweb.com/ar/privacy) - [Terms of Use — English](https://qiblaweb.com/en/terms) - [Terms of Use — Arabic](https://qiblaweb.com/ar/terms) ## Contact Issues, corrections, source disputes: support@qiblaweb.com