ICAO Airport Code Validator
Validate 4-letter ICAO airport codes (different from IATA 3-letter).
ICAO airport codes: the 4-letter regulatory ID behind every flight plan
An ICAO airport location indicator is a four-letter code (always uppercase A-Z, never digits) issued by the International Civil Aviation Organization, a UN specialized agency headquartered in Montreal. ICAO codes are documented in ICAO Doc 7910 — Location Indicators, refreshed several times a year. While IATA codes are commercial, ICAO codes are regulatory: they show up in flight plans, NOTAMs, METAR/TAF weather reports, ATC strips, aeronautical charts and Jeppesen/LIDO/DECEA navigation databases.
The hierarchical structure matters. The first letter identifies a continent or large region, the second letter a country or sub-region within it, and the last two pin the specific airport. This is why SB-prefixed codes are unambiguously Brazilian and why a flight planner can sanity-check geography from a quick glance at the strip.
ICAO regional prefixes that matter for the Americas
SBBrazil (the entire country is one ICAO sub-region)SAArgentina,SCChile,SPPeru,SUUruguay,SKColombia,SVVenezuela,SLBolivia,SEEcuador,SGParaguayK* contiguous United States (single-letter first prefix —KJFK,KLAX,KORD)PA* Alaska,PH* Hawaii,PGGuam,TJPuerto RicoCYCanada (CYYZToronto Pearson,CYVRVancouver)MMMexico,MDDominican Republic,MUCubaEGUnited Kingdom (EGLLHeathrow),EHNetherlands (EHAMSchiphol),EIIreland,ELLuxembourg,EDGermany civil,LFFrance,LESpain,LIItaly
Brazilian ICAO codes you'll see on every flight strip
Brazil's airspace is administered by DECEA (Departamento de Controle do Espaço Aéreo) under FAB (Força Aérea Brasileira), which publishes Brazilian AIP and operates the CINDACTA centers. Memorize these high-volume SB-codes:
SBGRSão Paulo / Guarulhos,SBSPSão Paulo / Congonhas,SBKPCampinas / ViracoposSBGLRio / Galeão,SBRJRio / Santos Dumont,SBJRRio / Jacarepaguá (general aviation)SBBRBrasília,SBCFBelo Horizonte / Confins,SBBHBelo Horizonte / PampulhaSBCTCuritiba / Afonso Pena,SBPAPorto Alegre / Salgado Filho,SBFLFlorianópolisSBSVSalvador,SBRFRecife,SBFZFortaleza,SBNTNatal antigo /SBSGSão Gonçalo do AmaranteSBBEBelém,SBMNManaus / Ponta Pelada (military) /SBEGEduardo Gomes (commercial)
Where ICAO codes appear and IATA codes do not
Most small airfields with no scheduled airline service have an ICAO code but never receive an IATA code. Examples: hospital helipads, agricultural strips, private fly-in communities, military air bases that don't accept civilian charter. SDAG Angra dos Reis, SDLP Lapa Boa Vista and many other Brazilian general-aviation fields are flight-planned by ICAO only. This is the practical reason flight tracking apps sometimes refuse a search for a small airport — there is no IATA code to index.
Use cases: from NOTAMs to METAR to charts
- Flight plans (ICAO form 4444): ICAO codes only. Item 13 (departure) and Item 16 (destination + alternates) must be 4-letter ICAO.
- NOTAMs: aeronautical notices keyed to ICAO IDs.
!SBSP 12/345means a NOTAM on Congonhas. - METAR / TAF aviation weather:
METAR SBGR 271200Z 09010KT 9999 SCT025 BKN040 24/19 Q1015. - Aeronautical charts (DECEA REA/REH, Jeppesen, LIDO, Garmin Pilot): plates indexed by ICAO IDs.
- Air Traffic Control: controllers refer to airports by ICAO when talking to other ACCs or filing FPLs.
ICAO vs IATA: a side-by-side memory aid
ICAO is the regulator (UN agency, Doc 7910, used in flight plans and ATC); IATA is the trade body (commercial codes used in tickets, baggage tags, GDS). Airport ICAO = 4 letters with geographic prefix (SBGR); airport IATA = 3 letters (GRU). Airline ICAO = 3-letter callsign root (TAM for LATAM Brasil, GLO for Gol, AZU for Azul, UAL for United, BAW for British Airways); airline IATA = 2 chars (LA, G3, AD, UA, BA). When in doubt: if the code is for a paper ticket it's IATA; if it's for an ATC strip it's ICAO.
Heliports, military bases and edge cases
Many heliports get ICAO codes starting with H in some regions (US convention uses 3 chars for heliports under K+something). Military bases vary: KEDW Edwards AFB and SBAN Anápolis Brazilian AFB are in Doc 7910. Some closed or seasonal airports retain a code on file. A validator should accept the shape /^[A-Z]{4}$/ and resolve against a current Doc 7910 snapshot — homebrew tables miss recent allocations to new private fields and small Amazon strips.
Open data sources for ICAO airport lookups
- OurAirports.com: most complete free dataset, ~80 000 entries, includes small ICAO-only fields.
- FAA NASR (US) and EUROCONTROL DDR2 (Europe): government-maintained ICAO mappings.
- DECEA AISWEB for Brazil: official AIP plates and current ICAO IDs.
- ICAO Doc 7910: the canonical source, sold by ICAO as PDF/online; new amendments roughly every two months.
FAQ
Are 4 letters always enough to validate an ICAO airport code? Shape-wise yes, semantically no. Combine the regex check with a lookup against Doc 7910 or OurAirports for full validation.
Do tiny airports really have ICAO codes? Yes — any airfield that needs to be referenced in a flight plan, NOTAM or weather report needs an ICAO ID. Many small Brazilian strips have one even without scheduled service.
Where do I get a free, current ICAO airport list? OurAirports.com is the best free option for global coverage. For Brazil specifically use DECEA AISWEB which publishes the official AIP.
What's the difference between SBSP and CGH? They refer to the same airport (São Paulo / Congonhas) — SBSP is the regulatory ICAO ID used in flight plans, CGH is the commercial IATA code on your ticket.
Can an airport have an ICAO code but no IATA code? Yes, very commonly — most airfields without scheduled passenger service have ICAO only. The reverse (IATA without ICAO) is almost unheard of.
Related Tools
CPF Validator
Validate Brazilian CPF numbers instantly using the official algorithm. Useful for testing document validation in applications. No data sent to servers.
Batch CPF Validator
Validate a list of CPFs (one per line) and see which are valid and which are not. No data sent to servers.
Batch CNPJ Validator
Validate a list of CNPJs (one per line) with a summary of valid, invalid and total. No data sent to servers.