Unformat.online/CronScope
More tools
Clean Text
Strip smart quotes, zero-width characters, non-breaking spaces, and invisible Unicode from any pasted text.
Markdown Viewer
Live split-view editor and renderer — edit on the left, preview on the right.
Text Diff Checker
Compare two texts, JSON payloads, or config files and see exactly what changed, line by line.
Log File Viewer
Open multi-gigabyte log files instantly — chunked indexing and virtual scrolling handle 10GB+ files without freezing your tab.
FileSQL
Drop a CSV or JSON file and query it with SQL instantly — no upload, no server.
Format SQL
Format SQL for MySQL, PostgreSQL, BigQuery, T-SQL, and more — uppercase keywords, proper indentation.
Schema Visualizer
Paste CREATE TABLE statements and get an ER diagram instantly — tables, columns, keys, and foreign-key relationships.
Format JSON
Prettify or minify JSON. Auto-fixes single quotes, trailing commas, and unquoted keys.
Format YAML
Format and validate YAML. Catches indentation errors in Kubernetes, Docker Compose, and GitHub Actions files.
Format XML
Indent and pretty-print XML. Works with SOAP, RSS, Maven POM, Android manifests, and SVG.
JWT Debugger
Decode JWTs instantly — view all claims, check expiry, and see the algorithm. Token never leaves your browser.
Shredder
Remove EXIF, GPS, and author metadata from images and PDFs. Redact secrets from text and log files.
SSL Certificate Checker
Check any domain's SSL/TLS certificate — expiry, issuer, and Subject Alternative Names.
PDF Tools
Merge, split, rotate, or sign PDFs, fill in forms, and add text — entirely in your browser, nothing uploaded.
CronScope
Paste a cron schedule and see every run on a 12-month calendar. Never misread a cron expression again.
Regex Tester
Test regex patterns against sample text with live-highlighted matches, or pick from a library of ready-made patterns — no regex knowledge required.
Base64
Encode text or files to Base64, or decode Base64 strings and preview images inline.
URL Encode / Decode
Encode URLs or decode percent-encoded strings like %20, %3D, %26 — instantly.
UUID Generator
Bulk-generate cryptographically random v4 UUIDs using crypto.randomUUID(). Copy one or all at once.

Cron Jobs & Timezones

A cron expression has no timezone baked in — it fires at whatever time your server's system clock reads. That gap between your server's timezone and your mental model is the source of most cron scheduling bugs. Here's how to think about it correctly.

The core problem

Most cloud servers run on UTC. You, the developer, probably think in your local timezone — let's say New York (EST, UTC−5). When you write a cron expression, which clock are you thinking about?

If you want a job to fire at 9:00 AM New York time, you need to write it as 0 14 * * * on a UTC server, because 9 AM EST = 2 PM UTC (9 + 5 = 14).

Most people write 0 9 * * * and wonder why the job fires at 4 AM local time.

Example: Schedule a daily report at 9:00 AM New York time
❌ What you write
0 9 * * *

Fires at 9:00 AM UTC — which is 4:00 AM EST in winter. Your users see the report hours before they wake up.

✅ What you need
0 14 * * *

Fires at 2:00 PM UTC = 9:00 AM EST. Report arrives in inboxes right on time.

9:00 AM in your timezone → cron expression on a UTC server

Reference table for the most common timezones. All expressions assume a UTC server clock.

TimezoneUTC offsetCron (UTC server)
New York (EST)
UTC−50 14 * * *
New York (EDT)
Summer — DST active
UTC−40 13 * * *
London (GMT)
UTC+00 9 * * *
London (BST)
Summer — DST active
UTC+10 8 * * *
Berlin (CET)
UTC+10 8 * * *
Berlin (CEST)
Summer — DST active
UTC+20 7 * * *
India (IST)
No DST
UTC+5:3030 3 * * *
Tokyo (JST)
No DST
UTC+90 0 * * *
Sydney (AEST)
Previous day in UTC
UTC+100 23 * * *

Formula: UTC hour = local hour − UTC offset. Negative results wrap around 24 hours.

The daylight saving time (DST) trap

DST is where cron scheduling gets genuinely tricky. Clocks in the US, Europe, and many other regions move forward one hour in spring and back one hour in autumn. But a UTC server clock never changes — it runs flat 24/7/365.

This means a cron job that runs at 9 AM local time in winter will run at 10 AM local time in summer (after clocks spring forward) — unless you update the expression.

Example: New York daily report, year-round
🌨️ Winter (Nov–Mar) — EST = UTC−5
Target9:00 AM EST
UTC equivalent2:00 PM UTC
Cron expression0 14 * * *
☀️ Summer (Mar–Nov) — EDT = UTC−4
Same cron fires at10:00 AM EDT ⚠️
To keep 9 AM, use0 13 * * *
You need to update the expression twice a year, or pick a timezone-aware scheduler.
Countries without DST are simpler

India, Japan, China, most of Africa, and Iceland (among others) do not observe DST. A UTC offset for these countries never changes, so a single cron expression works all year.

How to handle this correctly

Option 1 — Set the server to your target timezone

Change /etc/timezone or the TZ environment variable to your local timezone. The OS will handle DST transitions automatically, and your cron expressions can use local time directly. Downside: conflicts arise when the same server serves users in multiple timezones.

Option 2 — Use a timezone-aware scheduler

Modern job schedulers accept an IANA timezone alongside the cron expression and handle the UTC conversion automatically — including DST.

AWS EventBridge
schedule expression + timezone param
GitHub Actions
on: schedule: cron (UTC only — combine with timezone env)
Railway / Render
timezone field in dashboard
node-cron
options.timezone = 'America/New_York'
croner (JS)
new Cron(expr, { timezone: 'America/New_York' })
APScheduler (Python)
timezone='America/New_York' in CronTrigger
Option 3 — Schedule in UTC, accept the math

Write expressions in UTC and keep a reference table (like the one above). Maintain two expressions per job — one for standard time, one for DST — and swap them with an automated script twice a year. Verbose, but works with any cron implementation.

What is an IANA timezone?

The IANA Time Zone Database (also called the Olson database or tz database) is the authoritative source for timezone rules worldwide. It includes every DST transition, historical offset change, and political boundary update since the 1970s.

IANA timezone identifiers look like America/New_York, Europe/London, Asia/Tokyo — a region/city format. They encode all historical and future DST rules for that location, so a timezone-aware scheduler using IANA identifiers will always do the right thing, even during DST transitions.

Avoid abbreviations like “EST” or “PST” in code — they are ambiguous (EST means different things in the US and Australia) and most libraries prefer or require IANA identifiers.

Common IANA identifiers
America/New_YorkAmerica/ChicagoAmerica/DenverAmerica/Los_AngelesAmerica/TorontoAmerica/Sao_PauloEurope/LondonEurope/ParisEurope/BerlinEurope/MoscowAsia/KolkataAsia/ShanghaiAsia/TokyoAsia/SingaporeAustralia/SydneyPacific/AucklandAfrica/JohannesburgUTC

CronScope supports all IANA timezones.

Select your timezone in the dropdown and the next-run list updates instantly — DST transitions included.

Open CronScope