How to use it
Tune a receiver until DCF77 is heard as a steady tone that dips once a second (see below), then bring its audio in as described under “Getting the audio in” further down. Play demo signal needs no radio.
The page finds the tone, locks to the seconds, waits for the minute marker and then collects 59 bits. Expect the first time after one to two minutes and “verified” a minute later. Decoding continues while the page is in a background tab; only the drawing pauses.
Controls
- Spectrum: click or drag to choose the tone by hand; the arrow keys move it by 5 Hz (50 Hz with Shift) and A returns to automatic tuning.
- Automatic tone: locks onto the strongest steady tone between 300 and 1500 Hz.
- Demo: sends the current time or one you enter, in real time with sound or 10 or 60 times faster in silence.
Getting the audio in
There are four ways to get the signal in. Nothing is uploaded: all decoding happens in this tab.
- No radio needed — a web receiver in another tab. Open a public web-based SDR receiver in a second tab (universities and radio clubs run many of them), tune it to 77.5 kHz as described below (the receiver must reach long wave) and start its audio. Here, press Use computer audio, choose that tab in the sharing dialog and switch on sharing of the tab’s audio. Keep the receiver tab playing; this page can stay in the background.
- Your own receiver or SDR program on this computer. Press Use computer audio and share the program’s window or the entire screen together with system audio, or send the program’s output to a virtual audio cable and pick that cable after pressing Use microphone.
- A radio with a speaker. Hold it near the microphone and press Use microphone. It works, but room noise hurts weak signals; a cable from the headphone socket to the line or microphone input is better.
- A recording. Load a WAV or MP3 file with Open audio file.
Where and how to receive it
DCF77 is a long-wave time transmitter at Mainflingen, about 25 km south-east of Frankfurt am Main in Germany. It transmits on 77.5 kHz with 50 kW around the clock, and its time comes from the atomic clocks of PTB, Germany’s national metrology institute in Braunschweig. It can be received up to roughly 2000 km away, which covers central Europe. Reception is usually better at night.
A software radio has to cover such low frequencies, by direct sampling or with an upconverter. The antenna matters most: a long wire, an active antenna, or a ferrite rod or loop turned for the strongest signal (a ferrite rod at right angles to the direction of the transmitter). Keep it away from switching power supplies, chargers and monitors, which are strong noise sources on long wave.
Use CW mode, or USB or LSB tuned beside the carrier so that a tone of 500–800 Hz results:
USB tuned to 76.8 kHz gives 700 Hz. Choose a narrow filter, roughly 50–300 Hz, around the tone. Switch automatic gain control off or to slow and keep the gain moderate, because a fast gain control flattens the dips. Switch noise reduction and the notch filter off.
The signal
The carrier is amplitude-keyed. At the start of every second its amplitude falls to about 15 % for 100 ms (bit 0) or 200 ms (bit 1). Second 59 has no dip: that gap marks the minute. The keying occupies only a few tens of hertz. The carrier’s phase is also modulated with a pseudo-random sequence for more precise timing; this page ignores it.
The 59 bits give the time of the minute that begins at the next marker:
| Bits | Meaning |
|---|---|
| 0 | always 0 |
| 1–14 | weather and warning data, not decoded here |
| 15–19 | call bit, time change announced, CEST, CET, leap second announced |
| 20 | start of the time, always 1 |
| 21–28 | minute and its parity |
| 29–35 | hour and its parity |
| 36–58 | day, weekday, month, year and their parity |
Numbers are binary-coded decimal with the lowest bit first, so the bits weigh 1, 2, 4, 8, 10, 20, 40 and 80. Each parity bit makes the number of ones in its group even.
How it works
The audio is reduced to about 4000 samples per second and a Fourier transform finds the tone. The samples are multiplied by a cosine and a sine at that frequency and averaged over 20 ms. This measures the tone’s amplitude in a band only a few tens of hertz wide, so noise beside it does not count.
Each amplitude sample is filed by its position within the second. After a few seconds this folded average shows one sharp step, the start of the second. It then tracks each falling edge, so audio clock errors do no harm. For every second it compares the mean amplitude 0–100 ms and 100–200 ms after that edge with the level later in the same second. Because these are ratios, they still work when the receiver’s gain control makes the dips shallow.
A minute is accepted only if the marker, bits 0 and 20, the zone bits, all three parities, the value ranges and the weekday fit. It is “verified” when the following minute is exactly one minute later.
Things to try
- Run the demo at 60× and watch a whole minute arrive every second.
- Raise “Carrier during the dip” to 80 % to imitate a receiver with fast gain control.
- Add heavy noise and see which boxes turn uncertain.
- Send 23:58 on 31 December and watch every field roll over.
- Switch automatic tone off and click 60 Hz beside the tone: the dips vanish.
Frequently asked questions
Is my audio sent anywhere?
No. Capture and decoding run in this page on your device.
Why is the decoded time slightly late?
The receiver program and the browser buffer the sound, often for a few tenths of a second. The page cannot measure that delay, so it is part of the difference shown against your computer clock.
Why was a minute rejected?
One misread bit breaks a parity check. The clock keeps running from the last good minute.
Can it decode other time stations?
No. Stations such as MSF in Britain and WWVB in the USA, both on 60 kHz, use other codes. This page decodes DCF77 only.