Learn METAR

Documentation · v0.1.4

Part of Aviator's Toolkit Built by Cam Peterson at Parachute River. Aviator's Toolkit is a collection of free, offline-first PWA tools for general aviation pilots — study aids, reference tools, flight logbooks, checklists, and more. No account, no subscription, no internet required after first load.

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.

Decoding is entirely on-device Decoding is done entirely on your device — your reports are never sent to a server. The app works fully offline after first load. Live fetch (below) requires a network connection.

Who It's For

Learn METAR is useful at any stage of pilot training or currency:

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:

Tap Learn METAR! after entering the string. The report type (METAR or TAF) is detected automatically from the first token.

Where to get a raw METAR or TAF Copy one directly from aviationweather.gov, your EFB app's raw data view, or the ADDS text products page. Raw strings start with the report type identifier (METAR, SPECI, or TAF) followed by the station identifier.
Example input

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)).

Requires a network connection Live fetch calls a server-side function that proxies aviationweather.gov. It will not work offline. If the fetch fails, paste a raw METAR manually instead.

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:

For example, the wind token VRB03KT 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:

SectionExample TokenWhat It Covers
Report Type METAR SPECI TAF Whether this is a routine observation, special observation, or forecast
Station KORD ICAO airport identifier
Date/Time 121552Z Day of month and Zulu time of observation or forecast issuance
Wind 28012KT VRB03KT Direction (magnetic), speed, gusts, variable range
Visibility 10SM 1/4SM Prevailing visibility in statute miles
Weather -RA +TSRA BR Precipitation intensity, type, and obscurations. Intensity prefix: light (−), moderate (none), heavy (+)
Sky Condition FEW045 OVC010 Cloud coverage (FEW/SCT/BKN/OVC) and height in hundreds of feet AGL. Also CLR and SKC.
Temperature / Dew Point 22/08 M02/M05 Temperature and dew point in Celsius. M prefix = below zero.
Altimeter A2992 Q1013 Altimeter setting in inches Hg (A prefix) or hectopascals (Q prefix)
Remarks RMK section Automated station type, sea-level pressure, precipitation sensors, hourly temperature precision, and other coded remarks
TAF Period FM TEMPO BECMG PROB30 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.

Tip Work through the cards from start to finish on the first read-through of an unfamiliar report. On subsequent reports of the same type, you can tap directly to the section you're unsure about.

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:

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:

Reference vs. breakdown The reference is a lookup table — use it to quickly check a code or abbreviation you already recognize but can't remember. The card-by-card breakdown is the teaching tool — use it when you want to understand an unfamiliar report section in full context.

Preferences

Open Settings from the gear icon in the header. Available preferences:

Preferences are saved to localStorage on your device and persist across sessions.


Data Storage

StoreKey / NameContents
IndexedDB learnmetar-db v1
store: 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.

After an update If a new version of the app is available, the service worker downloads it in the background. To activate the update, close all open tabs of the app and relaunch it.

About

Learn METAR is part of Aviator's Toolkit — a collection of offline-first aviation study and flight tools for general aviation pilots.

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.