DMS to decimal degrees converter
40° 26′ 46.8″ N becomes 40.446333333333: degrees plus minutes over 60 plus seconds over 3600, with the sign taken only from the hemisphere letter, so south and west come out negative. Handy for digitizing paper maps or checking homework. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Degrees
- 40
- Minutes component of DMS
- 26
- Seconds component of DMS
- 46.8
- Hemisphere
- N
- Axis
- latitude
- Sign
- 1
- Decimal degrees
- 40.4463333333
- Decimal
- 40.4463333333
Cartographers digitizing paper maps, students checking homework, and pipelines that ingest gazetteer DMS strings all need the same deterministic rule without opening a spreadsheet.
How DMS and hemisphere letters become signed decimal degrees
Geographic angles on paper are almost always written as non-negative degrees, minutes, and seconds followed by a single cardinal letter. North and east are treated as positive; south and west as negative. The absolute magnitude is assembled with the standard sexagesimal formula: decimal magnitude equals degrees plus minutes divided by sixty plus seconds divided by thirty-six hundred.
The hemisphere letter then multiplies that magnitude by plus one for N or E, or by minus one for S or W, producing the signed decimal degree value used by WGS84 latitude and longitude fields. Keeping degrees non-negative and parking the sign exclusively on the letter avoids the classic double-negative bug where someone stores −40° and also marks S.
Minutes and seconds are required to lie in the closed interval from zero through sixty inclusive; values such as seventy-five minutes or negative seconds are rejected instead of being silently carried into the next component. Latitude uses N and S; longitude uses E and W; the response also tags axis as latitude or longitude so a client can verify that a latitude pipeline did not accidentally receive an E or W letter.
The check path recomputes magnitude and sign with the same fixed rounding used for published fields, so a successful response always ships with steps you can assert in tests or lab reports.
Practical tips, limits, and related searches
Prefer sending numbers for degrees, minutes, and seconds when you control the client; string numbers are accepted only when they match a strict finite numeric pattern. If your source string already includes a minus sign before the degrees, strip the minus and map it to S or W before calling this tool so the letter remains the single source of truth for sign.
When digitizing a table, run one call per latitude and one per longitude rather than stuffing both into a single request—this capability converts one DMS triple at a time. Keep minutes and seconds inside zero to sixty; if a logger produced seventy-five minutes, normalize or reject upstream rather than hoping for silent carry. Prefer this capability when you already have numeric DMS components and a clear cardinal letter; if your source is a map projection or a single signed decimal, use the matching geo tool instead.
What you can do with it
Digitize paper map DMS into GIS decimals
Cartographers enter degrees, minutes, seconds, and N/S/E/W from paper sheets and write signed decimal latitudes and longitudes into GeoJSON or shapefile attributes.
FAQ
How do you convert DMS to decimal degrees?
Compute magnitude as D + M/60 + S/3600, then multiply by +1 for N or E and by −1 for S or W.
What hemisphere letters are accepted?
N, S, E, and W (case-insensitive). N/S tag latitude; E/W tag longitude.
What happens if minutes or seconds are outside 0–60?
Minutes and seconds must lie in the closed interval from 0 to 60 inclusive.
Can degrees be negative?
No. Degrees must be non-negative; use hemisphere S or W for a negative signed result so the letter alone owns the sign.
Is the DMS to decimal degrees converter free?
The browser tool is free and runs locally.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/geo/dms-to-decimal \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"degrees":40,"hemisphere":"N"}'const res = await fetch("https://api.kit.forhosting.com/geo/dms-to-decimal", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"degrees": 40,
"hemisphere": "N"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/dms-to-decimal",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"degrees": 40,
"hemisphere": "N"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/dms-to-decimal", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"degrees":40,"hemisphere":"N"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"degrees":40,"hemisphere":"N"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/dms-to-decimal", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"degrees": 40,
"hemisphere": "N"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.dms_to_decimal",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_abs_degrees | 1000000000000 |
min_component | 0 |
max_minutes_seconds | 60 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
A DMS to decimal degrees converter turns classic survey and map notation into the signed decimal angle every modern GIS and API expects. Enter whole degrees, optional minutes and seconds, and a hemisphere letter—N or S for latitude, E or W for longitude—and the tool returns decimal_degrees equal to the signed magnitude D plus M over sixty plus S over thirty-six hundred, with the sign taken only from the letter. Minutes and seconds must stay inside the closed interval from zero to sixty; anything outside that range is rejected with invalid_input so bad field books never become silent wrong points.
How DMS and hemisphere letters become signed decimal degrees
That hard range matches how many field instruments and school worksheets teach the format, and it matches the invalid_input contract this capability publishes.
How to call the API and what comes back
Hemisphere accepts N, S, E, or W in any common case; other strings fail validation. Send a JSON body with required finite non-negative degrees (aliases d and deg), required hemisphere letter (aliases hemi, dir, direction, and cardinal), and optional minutes and seconds (aliases m, min, arcmin and s, sec, arcsec) that default to zero when omitted. Absolute degrees must stay within the published limit of one trillion so intermediate products remain finite in IEEE double precision on the Worker and in the browser. On success the response echoes rounded degrees, minutes, and seconds, sets hemisphere to the normalized uppercase letter, axis to latitude or longitude, sign to plus one or minus one, decimal_degrees and decimal to the same rounded signed value, dms to a compact display string with the letter, method to dms_hemisphere_to_decimal, formula to the documented sign and sexagesimal expressions, and steps to an ordered array of substitution lines. Failed validation—missing fields, non-finite numbers, negative degrees, minutes or seconds outside zero to sixty, an unknown hemisphere letter, or a non-finite converted magnitude—returns invalid_input and is never charged. Pricing is a flat $0.002 per successful request with unit item and zero marginal unit price.
Practical tips, limits, and related searches
Teaching examples are easy: forty degrees twenty-six minutes forty-six point eight seconds north yields a positive latitude near forty point four four; the same numbers with W yield a negative longitude; minutes equal to seventy-five demonstrate the hard invalid_input path. This landing targets people searching for a DMS to decimal degrees converter, hemisphere N S E W coordinate conversion, or degrees minutes seconds to decimal online; it is not a free-form string parser, not a reverse decimal-to-DMS formatter, and not a UTM or geohash projector. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when learners deliberately pass out-of-range minutes. Round-trip checks are simple: recompute D plus M over sixty plus S over thirty-six hundred by hand, apply the hemisphere sign, and confirm it equals the published decimal_degrees within the same twelve-decimal rounding used by the Worker.
Integration use cases
Homework checks for sexagesimal conversion
Students compare hand-worked D + M/60 + S/3600 results and hemisphere signs against a deterministic decimal_degrees field before submitting lab reports.
ETL normalization for gazetteer feeds
Pipelines coerce vendor DMS columns and cardinal letters into signed decimals before geocoding, with invalid_input traps for out-of-range minutes or seconds.