Learn METAR
Documentation · v0.1.4
Learn METAR is an offline-first progressive web app that turns a raw METAR or TAF string into a card-by-card interactive breakdown. Paste any report and the app parses it, highlights each token in context, and explains it in plain English — one section at a time, in the order it appears in the report.
The goal is not just to decode a report, but to build the mental model that lets you read METARs fluently. By always showing what a token is, where it appears in the full string, and why it's formatted that way, the app teaches the format progressively rather than just returning a translation.
Who It's For
Learn METAR is useful at any stage of pilot training or currency:
- Student pilots learning to decode METARs for the first time — the card-by-card format prevents the "wall of abbreviations" problem and explains each element before moving to the next.
- Certificated pilots who want to brush up on TAF format, decode an unfamiliar remark code, or verify their interpretation of a complex cloud group.
- Instructors using the breakdown as a teaching aid during ground lessons — paste a real-world METAR and walk through it together card by card.
The app is not a substitute for an approved weather briefing. Always obtain a full official weather briefing from 1800wxbrief.com, ForeFlight, or another FAA-approved source before flight.
Entering a METAR or TAF
There are two ways to get a report into the app: paste it manually, or fetch a live METAR directly by airport identifier or your current location.
Paste or type
Tap the input field and paste or type a raw METAR or TAF string. The app accepts the standard formats as published by the NWS and as returned by aviation weather services:
- METAR — routine hourly observation, beginning with
METARorSPECI - TAF — terminal aerodrome forecast, beginning with
TAF
Tap Learn METAR! after entering the string. The report type (METAR or TAF) is detected automatically from the first token.
METAR, SPECI, or TAF) followed by the
station identifier.
METAR KORD 121552Z 28012KT 10SM FEW045 SCT250 22/08 A2992 RMK AO2 SLP132 T02220083
Live METAR Fetch
Below the paste field, the or fetch live section lets you pull a current METAR directly from aviationweather.gov without copying and pasting. Two methods are available:
Fetch by ICAO identifier
Type a 4-letter ICAO airport identifier (e.g., KSLC, EGLL)
into the identifier field and tap Fetch or press Enter. The app retrieves
the most recent METAR for that station, populates the input field, and immediately
starts the card-by-card breakdown.
Fetch by location
Tap ☉ Use My Location to request your device's GPS position. The app searches for METAR-reporting stations within 75 miles, picks the nearest one, and fetches its current METAR. The status line shows the station identifier and distance (e.g., Loaded — KSLC (3.2 mi)).
Rate limiting
Live fetch is limited to 60 requests per hour per browser to stay
within service limits. The counter is tracked in localStorage using a
sliding one-hour window. If you hit the limit, the status line shows how many minutes
until it resets. Normal use — checking a few airports during preflight — will never
approach the limit.
Reading the Breakdown
After decoding, the app displays the full report string at the top of the breakdown view with the current card's token highlighted in amber. Below it, the card for that token explains the section in plain English.
Each card shows:
- Section label — the category of the token (e.g., "Wind", "Visibility", "Sky Condition")
- Raw value — the exact characters from the report string, highlighted in the report above
- Plain English translation — what the value means in everyday language
- Context note (where applicable) — additional detail about edge cases, related regulations, or how to interpret the value operationally
For example, the wind token produces a card labeled Wind with the translation "Variable wind direction at 3 knots" and a context note explaining that variable winds are reported when direction is too inconsistent to assign a single heading.
Section Types
The app parses both METAR and TAF tokens into the following section categories:
| Section | Example Token | What It Covers |
|---|---|---|
| Report Type | Whether this is a routine observation, special observation, or forecast | |
| Station | ICAO airport identifier | |
| Date/Time | Day of month and Zulu time of observation or forecast issuance | |
| Wind | Direction (magnetic), speed, gusts, variable range | |
| Visibility | Prevailing visibility in statute miles | |
| Weather | Precipitation intensity, type, and obscurations. Intensity prefix: light (−), moderate (none), heavy (+) | |
| Sky Condition | Cloud coverage (FEW/SCT/BKN/OVC) and height in hundreds of feet AGL. Also CLR and SKC. | |
| Temperature / Dew Point | Temperature and dew point in Celsius. M prefix = below zero. | |
| Altimeter | Altimeter setting in inches Hg (A prefix) or hectopascals (Q prefix) | |
| Remarks | section | Automated station type, sea-level pressure, precipitation sensors, hourly temperature precision, and other coded remarks |
| TAF Period | TAF change groups: from (FM), temporary (TEMPO), becoming (BECMG), probability (PROB) |
Navigating Cards
Use the ← PREV and NEXT → buttons below each card to step through the report token by token. You can also tap any highlighted portion of the report string at the top to jump directly to that token's card.
The progress indicator (e.g., 3 / 12) shows your current position in the breakdown. The app remembers your position within a session — navigating to History and back returns you to the same card.
Saved Reports
Every report you decode is automatically saved to the History panel. The History panel lists all past reports in reverse chronological order. Each entry shows:
- Report type (METAR or TAF)
- Station identifier
- Date and time of the observation or forecast
- First few tokens of the raw string as a preview
Reports are stored in IndexedDB on your device. They persist across app launches and browser restarts.
Revisiting a Report
Tap any entry in the History panel to reload that report's breakdown. The full card-by-card breakdown is regenerated from the saved raw string. Your previous navigation position within that report is not preserved — the breakdown opens at the first card.
Clearing History
Tap Clear All in the History panel header to delete all saved reports. A confirmation dialog appears before deletion. Individual reports can be removed by swiping left on the entry (mobile) or tapping the delete icon (desktop). Cleared history cannot be recovered.
Built-In Reference Guide
Tap the ℹ info button in the header to open the built-in reference sheet. The reference guide is a compact, scrollable summary of METAR and TAF format conventions organized by section type. It is always available offline and does not require an active decode session to use.
The reference covers:
- Full weather descriptor and precipitation code tables (intensity, descriptor, precipitation, obscuration, other)
- Sky coverage abbreviations and ceiling definitions
- TAF change group types and their meanings
- Common remark codes (AO1/AO2, SLP, TSNO, PRESRR/PRESFR, etc.)
- Temperature and altimeter format conventions
Preferences
Open Settings from the gear icon in the header. Available preferences:
- Auto-advance cards — When enabled, the breakdown automatically advances to the next card after a short delay on each new decode. Useful when reviewing a report sequentially rather than jumping to specific sections.
- Show raw token in card header — Toggle whether the raw token string (e.g.,
28012KT) is shown at the top of each card in addition to the section label.
Preferences are saved to localStorage on your device and persist across
sessions.
Data Storage
| Store | Key / Name | Contents |
|---|---|---|
| IndexedDB | learnmetar-db v1store: history (autoIncrement) |
All decoded report records — raw string, parsed tokens, station, date/time, report type |
| localStorage | learn-metar-disclaimer-accepted |
One-time flag set after the user accepts the initial disclaimer |
| localStorage | learnmetar-fetch-log |
Array of timestamps (ms) for live fetch requests, used for the 60-per-hour rate limit sliding window. Pruned automatically on each fetch. |
All data is stored locally on your device. Decoding is performed entirely in-browser and nothing is transmitted to a server. Live METAR fetch sends only the requested ICAO identifier or coordinates to the proxy function — no report content or history is transmitted.
Legacy Migration
If a previous version of the app stored report history in localStorage,
the app detects the old data on first load and automatically migrates it to IndexedDB.
The migration runs once and removes the old localStorage entry after successful import.
No action is required from you.
Offline & PWA
Learn METAR is a Progressive Web App. After your first visit, the app shell and all assets are cached by a service worker. All subsequent loads — even with no network — are served from the cache. Decoding works entirely offline; no network request is made when you decode a pasted or typed report. Live METAR fetch requires a network connection — if offline, use the paste field with a report copied from your EFB or another source.
To install as a standalone app (no browser chrome), use your browser's Add to Home Screen (iOS/Android) or Install (Chrome/Edge desktop) option. Once installed, the app launches directly without opening a browser tab and persists across device restarts.
About
Learn METAR is part of Aviator's Toolkit — a collection of offline-first aviation study and flight tools for general aviation pilots.
- Built with vanilla HTML, CSS, and JavaScript — no frameworks, no accounts, no server.
- Designed to build understanding, not just decode — each card explains the why behind the format.
- Parsing is based on FAA/NWS METAR and TAF format specifications (FMH-1 and AC 00-45).
This is an educational tool. Always obtain a complete official weather briefing from an FAA-approved source before flight. METAR and TAF data obtained through this app should not be used as the sole basis for go/no-go decisions.
Part of Aviator's Toolkit. Built by Cam Peterson at Parachute River.