EPSG Codes for Brazil and Latin America: The Cheat Sheet
An EPSG code is a number that stands for an entire coordinate reference system — datum, units, and the projection if there is one. This page is what you reach for when a Brazilian or Latin American file hands you a number and no explanation: which code SIRGAS 2000 is, which UTM zone covers which state, and how to convert between them.
Every code here was read out of GDAL on 11 September 2026 — GDAL 3.13.3 "Iowa City", PROJ 9.8.1 — not from memory. Where the name a tool shows differs from the name in the WKT, both are printed: that difference is what turns a datum search into an empty result.
What an EPSG code actually is
An EPSG code is a registry identifier for a coordinate reference system. One number stands for a whole definition — datum, ellipsoid, prime meridian, units, and, if the CRS is projected, the projection and its parameters. Writing EPSG:4674 says "degrees on the SIRGAS 2000 datum" instead of forty lines of WKT.
That is why "my file has no EPSG code" is so common a complaint. A Shapefile's .prj stores no number; it stores WKT, and whether a reader turns that text back into a code depends on how closely it matches the registry. Our Shapefile guide covers the sidecar files; the authorities for codes are epsg.org and the PROJ documentation.
Some formats have nowhere to put a CRS, and a default is assumed silently. Run ogrinfo -so -al on a bare GeoJSON and OGR reports GEOGCRS["WGS 84" with ID["EPSG",4326] — nothing in the file said so. In Brazil that is dangerous because it nearly works: SIRGAS 2000 and WGS 84 agree to well under a metre, so the wrong start still looks right.
One property to internalise first: EPSG codes are dense, not sparse. A one-digit typo usually lands on another valid CRS elsewhere in the world. EPSG:4674 is SIRGAS 2000; EPSG:4675 is GEOGCS["Guam 1963". Nothing complains — your data just moves.
The Brazilian set: SIRGAS 2000, SAD 69 and Córrego Alegre
The codes you meet in Brazilian data, each with the name GDAL prints. All are in the picker on our coordinate converter.
In current use
These are the codes to choose for new work:
- EPSG:4674 —
GEOGCS["SIRGAS 2000"; degrees, the national reference frame, and the right answer for anything in latitude and longitude. - EPSG:31978 through EPSG:31985 —
PROJCS["SIRGAS 2000 / UTM zone 18S"throughPROJCS["SIRGAS 2000 / UTM zone 25S"; metres, covered zone by zone below. - EPSG:5880 —
PROJCS["SIRGAS 2000 / Brazil Polyconic"; the national-extent projection, for when a dataset covers the country and no single UTM zone will do. Its Mercator sibling, EPSG:5641, isPROJCS["SIRGAS 2000 / Brazil Mercator". - EPSG:32722, EPSG:32723, EPSG:32724 —
PROJCS["WGS 84 / UTM zone 22S"and its 23S and 24S neighbours; the same grid on the WGS 84 datum, which is what a GPS receiver hands you.
The legacy set you inherit
You do not choose these; you receive them, usually in something digitised before 2005. The converter marks each — legacy.
- EPSG:4618 —
GEOGCS["SAD69"in the WKT, no space. The picker readsSAD 69 — legacy (EPSG:4618), with a space, so searching a.prjfor the UI label finds nothing. - EPSG:29192 and EPSG:29193 —
PROJCS["SAD69 / UTM zone 22S"andPROJCS["SAD69 / UTM zone 23S"; the old UTM pair for the populous southeast. - EPSG:29101 —
PROJCS["SAD69 / Brazil Polyconic"; the predecessor of 5880, and why an old national map lands tens of metres off. - EPSG:4225 —
GEOGCS["Corrego Alegre 1970-72". GDAL's WKT carries no accent; the option label writesCórrego Alegre 1970-72 — legacy (EPSG:4225), and this article writes Córrego Alegre in prose. Search the.prjfor the unaccented string.
The two global codes
Two more turn up in every project, whatever the country:
- EPSG:4326 —
GEOGCS["WGS 84"; degrees, the lingua franca of GPS and of GeoJSON. - EPSG:3857 —
PROJCS["WGS 84 / Pseudo-Mercator"; what every web map renders in, and a bad place to compute anything.
EPSG:3857 units are not metres. They are metres only at the equator, and the error grows with latitude. Measured at São Paulo on 11 September 2026, two points at latitude -23.5505 and 0.1° apart in longitude are 11,131.949 units apart in 3857 against a true geodesic distance of 10,210.207 m — a 9.03% overstatement, 921.7 m on a 10.2 km line. The ratio, 1.09028, is very nearly 1/cos(23.5505°), or 1.09086. The same pair in EPSG:31983 comes out 10,209.419 m apart, 0.788 m from the geodesic, the expected effect of UTM's 0.9996 scale factor. Measure in UTM or the Polyconic; render in 3857.
Picking a UTM zone in Brazil
The SIRGAS 2000 UTM codes are contiguous, so there is a rule rather than a lookup: 31977 + (zone - 17), covering zones 17S to 25S. GDAL confirms it — gdalsrsinfo -o proj4 EPSG:31983 prints +proj=utm +zone=23 +south. Do not extrapolate past the block: EPSG:31986 is not zone 26S, it is PROJCS["SIRGAS 1995 / UTM zone 17N" — another datum, the other hemisphere.
The lists below were computed on 11 September 2026 from IBGE's maximum-quality state boundaries, via the malhas API linked at the end. A state appears under every zone its boundary enters, not the one zone a summary table would assign it.
Zone by zone
Each zone lists the states whose boundary enters it:
- Zone 18S — EPSG:31978 — western Acre, western Amazonas. Brazil's westernmost land sits at about 73.99°W, inside zone 18, so no Brazilian state reaches zone 17S;
EPSG:31977is offered for the rest of SIRGAS 2000's continental coverage. - Zone 19S — EPSG:31979 — eastern Acre including Rio Branco, central Amazonas, western Rondônia.
- Zone 20S — EPSG:31980 — Amazonas, most of Rondônia and Roraima, western Mato Grosso.
- Zone 21S — EPSG:31981 — eastern Amazonas, Rondônia and Roraima, Mato Grosso, and the western edges of Pará, Amapá, Mato Grosso do Sul, Paraná and Rio Grande do Sul.
- Zone 22S — EPSG:31982 — Santa Catarina entirely, plus Paraná, Rio Grande do Sul, Mato Grosso do Sul, eastern Mato Grosso, Goiás, Pará, eastern Amapá, and the western edges of Distrito Federal, São Paulo, Tocantins and Minas Gerais, plus the western sliver of Maranhão.
- Zone 23S — EPSG:31983 — São Paulo including the capital, nearly all of Maranhão, most of Minas Gerais, eastern Distrito Federal, Goiás, Tocantins and Pará, western Piauí, Bahia and Rio de Janeiro.
- Zone 24S — EPSG:31984 — Ceará and Sergipe entirely, Espírito Santo, eastern Bahia, Piauí, Minas Gerais and Rio de Janeiro, and inland Rio Grande do Norte, Paraíba, Pernambuco and Alagoas, plus the eastern sliver of Maranhão.
- Zone 25S — EPSG:31985 — the eastern tip of the Northeast, east of 36°W: Natal, João Pessoa, Recife and Maceió, plus Fernando de Noronha.
The states that span two zones, or more
A few states refuse to sit in one zone, and these are the cases that start the arguments:
- Amazonas spans four zones — 18S to 21S. There is no "UTM zone of Amazonas"; a state-wide dataset uses a national projection or stays in degrees.
- Pará, Mato Grosso, Minas Gerais and Maranhão span three each. Maranhão's outer two are slivers: the bulk is 23S, with a western edge in 22S and an eastern edge in 24S.
- Distrito Federal spans two, as does the municipality of Brasília alone: its boundary runs from 48.29°W to 47.31°W, straddling the 48°W line between
EPSG:31982andEPSG:31983. - Only three states sit in a single zone — Santa Catarina in 22S, Ceará and Sergipe in 24S.
- The Atlantic islands fall off the end. IBGE's mesh for the municipality of Vitória includes land at 28.85°W, the Trindade and Martim Vaz group, in zone 26S — past the last SIRGAS 2000 UTM code offered.
- When a dataset crosses zones, stop choosing a zone.
EPSG:5880covers the country in one projected system;EPSG:4674keeps it in degrees until something needs metres.
The Latin American set
The same coordinate converter moves a point between any of these and the Brazilian set. Several are names that look right and are not, so the GDAL string is printed for each.
Colombia
Colombia runs on MAGNA-SIRGAS, in two codes that are easy to confuse:
- EPSG:4686 —
GEOGCS["MAGNA-SIRGAS"; geographic, the national frame. - EPSG:9377 —
PROJCS["MAGNA-SIRGAS 2018 / Origen-Nacional". Keep the 2018: this is a different datum realization, not a projected version of 4686. In the WKT, 9377's datum carriesAUTHORITY["EPSG","1329"]while 4686's carriesAUTHORITY["EPSG","6686"].
Argentina
Argentina's pair separates the geographic frame from the grid:
- EPSG:5340 —
GEOGCS["POSGAR 2007"; geographic, in degrees. It is not the Argentine grid, and calling it one is the commonest mistake made with this code. - EPSG:5343 and EPSG:5349 —
PROJCS["POSGAR 2007 / Argentina 1"andPROJCS["POSGAR 2007 / Argentina 7"; the Gauss-Krüger bands, and the ones in metres.
Chile
Chile has one offered code, and one neighbour that is not the same frame:
- EPSG:5360 —
GEOGCS["SIRGAS-Chile 2002". Note the 2002. The 2016 realization is a separate code,EPSG:9153, which GDAL namesGEOGCS["SIRGAS-Chile 2016"and the converter does not offer. Renaming 5360 to "2016" merges two different frames.
Mexico
Mexico repeats the same geographic-versus-projected split:
- EPSG:6365 —
GEOGCS["Mexico ITRF2008"; geographic, in degrees, and likewise not a grid. - EPSG:6362 —
PROJCS["Mexico ITRF92 / LCC"; the Lambert conformal conic, the projected one of the pair.
The continental frame
One code spans the continent, plus the neighbour it is mistaken for:
- EPSG:4170 —
GEOGCS["SIRGAS 1995"; the first continental SIRGAS realization, geographic, met in archived regional datasets rather than chosen for new work. - It is not Uruguay's frame. SIRGAS-ROU98 is
EPSG:5381,GEOGCS["SIRGAS-ROU98", and its gridEPSG:5382,PROJCS["SIRGAS-ROU98 / UTM zone 21S". Neither is offered by the converter.
Converting between them: SIRGAS 2000, WGS 84 and UTM
In the browser
Paste a coordinate into the coordinate converter, pick a CRS, and read every other representation of the same point: decimal degrees, DMS, UTM easting and northing, WKT, EWKT and WKB. It runs entirely in the page. Four things are worth knowing.
- It offers 42 codes in five groups, and every code in the Brazilian and Latin American sets above is one of them. The four this article names only to warn you off —
EPSG:4675,EPSG:9153,EPSG:5381andEPSG:5382— are deliberately absent, as isEPSG:31986. - The group names are English in every locale.
Global,Brasil,Latin America,EuropeandNorth Americaare hardcoded, so the Portuguese and Spanish versions show those same five words. - The option labels are hardcoded too, which is why
SAD 69 — legacy (EPSG:4618)andSIRGAS-Chile 2002 — Chile (EPSG:5360)read the same in all three languages. The— legacymarker is a signal: datums you meet, not datums you pick. - There is no deep link. The page reads nothing from the query string, so a URL with a coordinate appended opens an empty form.
On the command line
Reach for the CLI when you have a file or a thousand points — not because something is missing from the picker. The transcripts below ran on 11 September 2026, all on one point: Praça da Sé, São Paulo, at -23.5505, -46.6333.
- cs2cs —
echo "-23.5505 -46.6333" | cs2cs -f "%.3f" EPSG:4674 EPSG:31983prints333287.915 7394588.319 0.000. To the Polyconic,cs2cs -f "%.3f" EPSG:4674 EPSG:5880prints5751824.537 7375179.974 0.000. - Axis order is the trap. Given an
EPSG:code, PROJ honours the authority's axis order, soEPSG:4674input is latitude then longitude. Feed it lon lat and you get a silent wrong answer, not an error. - gdaltransform takes the opposite order.
echo "-46.6333 -23.5505" | gdaltransform -s_srs EPSG:4674 -t_srs EPSG:31983prints333287.91510143 7394588.31863695 0— same point to the millimetre, same toolchain, input reversed. - ogr2ogr for the file —
ogr2ogr -s_srs EPSG:4674 -t_srs EPSG:31983 -f GeoJSON out.geojson in.geojsonwrites"name": "urn:ogc:def:crs:EPSG::31983"and the same easting and northing. The-s_srsis what makes it correct on a GeoJSON, which carries no CRS of its own. - Check versions before trusting a transcript —
gdalinfo --versionprintsGDAL 3.13.3 "Iowa City", released 2026/08/13. For PROJ usecs2cs 2>&1 | head -1, printingRel. 9.8.1, April 10th, 2026, becausecs2cs --versionexits with an error status.
Test files you can use
Every line below was checked on 11 September 2026 with a browser user agent, from one machine. A status is advisory: a source that answers for us may refuse you.
- The EPSG registry — epsg.org answered 200; search by code or area. The bare origin redirects with a 302, so link the page, not the origin. The dataset is available at no charge, and IOGP's ownership "must be acknowledged in any publication or transmission" under its terms.
- PROJ documentation — proj.org answered 200 with an open CORS header, and the bare origin is likewise a 302 into it. PROJ is released under the X/MIT licence, and the transverse Mercator page answered 200.
- IBGE malhas API, a file rather than a portal — the Brazil boundary as GeoJSON answered 200 with
access-control-allow-origin: *, so it works from a web page as well as a download. Append&intrarregiao=UFfor the state meshes the zone lists came from. The API page states no licence — credit IBGE and check the portal's terms before republishing. - IBGE's downloads portal — downloads-geociencias answered 403 to our script, and to a browser user agent too, behind a Cloudflare interstitial — a challenge a person clears interactively and a script cannot. Download from it in a browser; do not fetch it from a web app. A bot filter, not a dead link.
- INEGI, Mexico — inegi.org.mx/temas/mapas answered 200 to a browser user agent with no CORS header: download from it, do not fetch it from a web app.
- IGAC, Colombia — igac.gov.co answered 200 and publishes through an open-data section, terms of use linked in the footer. One warning: its geoportal subdomain did not answer at all, timing out after 10.3 seconds on two user agents. It may be reachable from inside Colombia.
- IBGE's file server — geoftp.ibge.gov.br answered 200 over https with an open CORS header, and holds the bulk cartographic products.
Take the habit behind the page: before writing a code anywhere, ask the software what it means. gdalsrsinfo -o wkt1 EPSG:5360 says 2002, not 2016. If your next file is a raster rather than a list of points, the same discipline applies to how its bytes are arranged: our guide to Cloud Optimized GeoTIFFs does for the layout what this page does for the codes, and Geodocs handles both for a field team.