Every Ramadan, the same thing happens. You’re in a meeting that’s overrun, or deep in a piece of work, and suddenly it’s five minutes past Maghrib and you’ve missed the window to break your fast at the right time. Or worse — you’ve set a generic alarm for suhoor that doesn’t account for the fact that Fajr shifts by a couple of minutes every single day.

The prayer times aren’t fixed. They drift throughout the month as the sun’s position changes. A static alarm doesn’t cut it.

I wanted something dead simple: give it your location, and it spits out an .ics calendar file with properly timed blockers for every day of Ramadan. Import it into Google Calendar, Apple Calendar, or Outlook, and forget about it.

How it works

The app is a single HTML file with no dependencies, no framework, no build step. You open it, it does its job, you close it.

  1. Set your location — either via browser geolocation or by typing a city. It geocodes via OpenStreetMap’s Nominatim API.
  2. Choose your period — defaults to the current Ramadan (auto-detected via Hijri date conversion), or pick a custom date range.
  3. Configure your blockers — toggle Maghrib and/or Suhoor independently. For each, you control:
    • How long the blocker lasts (e.g. 30 minutes for a quick iftar, 45 for a proper suhoor)
    • How many minutes before the adhan it should start (or end, for suhoor)
  4. Pick a calculation method — Muslim World League, ISNA, Umm Al-Qura, and others. Different methods use different sun angles for Fajr and Isha, which affects the times. If you’re not sure, ask your local mosque.
  5. Download — generates and downloads a .ics file with every event pre-populated. Each event includes the exact prayer time, the Hijri date, and your location in the description.

Prayer times come from the Aladhan API, which supports all the major calculation methods and handles the spherical astronomy for you.

The details that matter

A few things I cared about getting right:

Suhoor timing is backwards. Unlike Maghrib where you want the blocker to start before the adhan, for suhoor you need the blocker to end before Fajr. So the suhoor blocker is anchored to Fajr and works backwards — if you set a 45-minute blocker ending 10 minutes before Fajr, it calculates the start time from there. This means your alarm wakes you up at exactly the right time, no mental arithmetic required.

Shareable links. Once you’ve configured everything, you can generate a URL with all your settings encoded as query parameters. Send it to family or your mosque WhatsApp group and they get the same setup pre-filled — they just hit download. Useful when you’ve already figured out the right method and timings for your area.

Calendar alarms. Each event includes a built-in reminder (10 minutes for Maghrib, 5 for suhoor) so your phone actually buzzes. The events are set as OPAQUE so they properly show as busy in your calendar and block out that time.

Hijri dates in every event. The description for each blocker includes the Hijri date (e.g. “15 Ramadan 1447”), which is useful for tracking where you are in the month, especially for things like the last ten nights.

Why not just use an existing app?

There are plenty of prayer time apps. But I didn’t want an app — I wanted calendar events. I want Ramadan to show up in the same place as my meetings, my deadlines, and my life. Not in a separate app I have to remember to check.

Most prayer time apps also don’t do blockers. They’ll notify you at Maghrib, sure. But by then you’re already in a meeting. I want a 30-minute block in my calendar before Maghrib so that nothing gets scheduled over it in the first place.

The whole thing is a single static HTML page hosted on Render. No accounts, no tracking, no backend. Open it, configure, download, done.