- 326 EPSG coordinate systems — geographic and projected, covering every region of the world
- Manual mode — transform a single coordinate pair interactively
- Batch mode — upload a CSV or Excel file and transform thousands of rows at once
- Angular format support — Decimal Degrees (DD), Degrees Minutes Seconds (DMS), Degrees Decimal Minutes (DMD), and Gradians
- Unit conversions — meters, feet, US survey feet, kilometers, miles
- Per-row CRS — in batch mode, each row can have its own input EPSG code from a dedicated column
- EPSG.io fallback — if a CRS is not in the local database, the tool fetches its proj4 definition from epsg.io automatically
- Zero server required — everything runs in the browser; no data is ever sent anywhere
- Works offline — once loaded, the page and its CRS database function without a network connection
Open the live app directly — no installation needed:
https://geoharkat.github.io/GeoCRS_Transformer/
GeoCRS_Transformer/
├── geocrs_transformer.html # Single-file application
├── crs_database.js # 326 EPSG definitions (proj4 strings, wrapped as JS)
└── README.md
The entire UI, logic, and styling lives in
geocrs_transformer.html.
crs_database.jsis loaded via a<script>tag so the tool works fromfile://without a local server.
Transform one coordinate at a time.
- Select a region → country → EPSG system for the input CRS
- Enter X / Longitude / Easting and Y / Latitude / Northing
- Choose the input angular format (DD, DMS, DMD, Grad, or Auto-Detect)
- Select the output CRS and desired output format / units
- Click Transform Coordinate
Use the ⇄ swap button to instantly reverse the input and output systems.
| Format | Example |
|---|---|
| Decimal Degrees | 30.54 |
| Degrees Minutes Seconds | 30° 32' 24" or 30 32 24 |
| Degrees Decimal Minutes | 30° 32.4' |
| Gradians | 33.933 |
| With hemisphere letter | 30.54N, 6.35E |
Transform an entire dataset in one step.
- Drop or select a CSV or Excel (.xlsx / .xls) file
- Map the X column, Y column, and either:
- Set a global input CRS (all rows use the same system), or
- Point to an EPSG column to use a different input CRS per row
- Choose the output CRS and output format
- Click Transform & Prepare Download
- Download the result as a CSV with
Out_XandOut_Ycolumns appended
X,Y,EPSG
648235.9,6862268,2154
530268.1,179643.9,27700
475762.7,4202404,2100Because the CRS database is loaded via a <script> tag (not fetch), the tool works directly from the filesystem:
# Clone the repo
git clone https://github.com/geoharkat/GeoCRS_Transformer.git
cd GeoCRS_Transformer
# Open directly in your browser — no server needed
open geocrs_transformer.html # macOS
xdg-open geocrs_transformer.html # Linux
start geocrs_transformer.html # WindowsAlternatively, serve it with any static server:
python3 -m http.server 8000
# then open http://localhost:8000/geocrs_transformer.html| Library | Version | Purpose |
|---|---|---|
| proj4js | 2.9.2 | Coordinate reprojection engine |
| PapaParse | 5.4.1 | CSV parsing |
| SheetJS (xlsx) | 0.18.5 | Excel file parsing |
| Tailwind CSS | CDN | Utility-first styling |
| Font Awesome | 6.5.1 | Icons |
| Space Grotesk | — | Typography |
No build step. No framework. No backend.
The bundled crs_database.js contains 326 EPSG coordinate systems covering:
- Geographic CRS (latitude/longitude in DD, DMS, DMD, or Grad)
- Projected CRS (UTM zones, national grids, Lambert, Mercator, etc.)
- All major regions: Africa, Europe, Americas, Asia-Pacific, Middle East, and more
For any EPSG code not included, the tool automatically falls back to fetching the definition from epsg.io.
- Vertical datums are not handled — only horizontal (2D) reprojection is supported.
- Grid-shift transformations (NTv2, NADCON, etc.) are not available in the browser build of proj4js; datum shifts use 7-parameter Helmert transformations only.
- The EPSG.io fallback requires an internet connection.
Issues and pull requests are welcome. If a CRS is missing from the database or a transformation gives unexpected results, please open an issue with:
- The input EPSG code and coordinate
- The output EPSG code
- The expected vs. actual result
Ismail Harkat
📧 geoharkat@gmail.com
🌐 geoharkat.github.io/GeoCRS_Transformer
This project is licensed under the MIT License — see the LICENSE file for details.