Degrees minutes seconds converter
45° 30′ 36″ is exactly 45.51 decimal degrees, and the same tool splits a decimal angle back into degrees, minutes and seconds. Minutes or seconds outside 0 to 60 are refused, so a mistyped column never becomes a wrong angle. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Degrees
- 45
- Minutes
- 30
- Seconds
- 36
- Direction
- To decimal
- Decimal degrees
- 45.51
- Dms
- 45° 30' 36"
Surveyors, navigators, GIS analysts, and students constantly switch angles between decimal degrees and the classical degrees-minutes-seconds form. A coordinate might arrive as forty-five point five one degrees from a GPS log, while a paper plat or a textbook still prints forty-five degrees thirty minutes thirty-six seconds. This capability converts either way with a single pure function: DMS components become one signed decimal, or a decimal splits into degrees, minutes, and seconds.
What DMS and decimal degrees mean
A full circle is three hundred sixty degrees. Each degree divides into sixty minutes of arc, and each minute into sixty seconds of arc, so one second is one three-thousand-six-hundredth of a degree. Decimal degrees collapse that hierarchy into a single real number: twelve degrees thirty minutes becomes twelve point five, and negative values point south or west depending on your axis convention.
The forward formula is straightforward: take the sign from the degrees field, form the absolute magnitude as absolute degrees plus minutes over sixty plus seconds over three thousand six hundred, then reapply the sign. The reverse peels the integer degree part from the absolute decimal, multiplies the fractional remainder by sixty to obtain minutes, then multiplies the leftover fraction by sixty again for seconds.
Input minutes or seconds below zero or above sixty are illegal under this contract—even though sixty can arithmetically equal the next unit—so importers catch transposition errors and out-of-range columns before they pollute a database. Output on the reverse path keeps minutes and seconds in a normalized half-open range with a small carry step so floating-point noise does not publish sixty seconds. Everything is elementary arithmetic on a few scalars: no series, no sampling, no locale or timezone effects, and no dependence on external ephemerides or map projections.
Practical tips, limits, and related searches
Prefer exact classroom pairs when teaching: forty-five degrees thirty minutes thirty-six seconds equals forty-five point five one decimal degrees, and negative twelve point five decimal degrees becomes negative twelve degrees thirty minutes zero seconds. When cleaning survey CSV columns, validate minutes and seconds first—values such as seventy-five minutes almost always mean a data-entry error or a unit mix-up, and this tool will hard-fail instead of inventing a wrong decimal. Sign lives on degrees or on the decimal value; do not put a minus on minutes or seconds.
This landing targets people searching for a degrees minutes seconds converter or a DMS to decimal degrees calculator; it is not a lat-long geocoder and does not attach datums or hemispheres as letters.
What you can do with it
GIS and survey CSV cleanup
Normalize mixed DMS and decimal columns from field books or legacy plats into one consistent decimal-degrees field before loading a spatial database.
Navigation log and map annotation pipelines
Convert bearings and chart labels between human-readable DMS strings and machine-friendly decimal degrees for routing or CAD overlays.
FAQ
Which directions does this converter support?
Both: DMS to decimal degrees and decimal degrees to DMS.
What range is allowed for minutes and seconds?
Both must be between 0 and 60 inclusive.
Can I convert a negative angle?
Yes. Put the sign on degrees (for DMS input) or on value (for decimal input). Minutes and seconds stay non-negative.
Is the degrees minutes seconds converter free?
The browser tool is free and runs locally.
How do I convert 45° 30′ 36″ to decimal degrees?
Add the degrees, the minutes divided by 60 and the seconds divided by 3600. For 45° 30′ 36″ that gives 45.51 decimal degrees, which is exactly what the converter returns.
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/trig/dms-to-decimal \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"degrees":45}'const res = await fetch("https://api.kit.forhosting.com/trig/dms-to-decimal", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"degrees": 45
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/dms-to-decimal",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"degrees": 45
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/dms-to-decimal", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"degrees":45}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"degrees":45}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/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": 45
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.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
Minutes and seconds that fall outside the closed range from zero to sixty are rejected with invalid_input so bad field data never silently becomes a wrong heading. There is no geocoder, no network call, and no wall-clock dependency—the free browser tool and the prepaid API path run the same deterministic solve, so homework checks, ETL scripts, and map pipelines all agree after fixed decimal rounding.
How to call the API and what comes back
For DMS to decimal, pass degrees (required for that direction) plus optional minutes and seconds, which default to zero when omitted. Optional direction is auto by default: if only value is present the tool converts to DMS; if only degrees is present it converts to decimal. Use it from GIS ETL jobs, classroom angle drills, navigation log cleanup, CAD annotation pipelines, or any workflow that needs reproducible DMS conversion without installing a desktop GIS package on every machine. Send JSON with either a DMS triple or a decimal value. Aliases d and deg map to degrees; m, min, and arcmin map to minutes; s, sec, and arcsec map to seconds. For decimal to DMS, pass value (aliases decimal, decimal_degrees, and angle). Force the path with to_decimal or to_dms when you need an explicit mode (aliases mode and convert). On success the response includes direction, decimal_degrees, degrees, minutes, seconds, a compact dms display string, method, and a short formula block. Failed validation—missing both sides of the contract, non-finite numbers, minutes or seconds outside zero to sixty, ambiguous dual input without direction, or magnitudes past published limits—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
Keep absolute magnitudes inside the published ceiling so intermediate IEEE doubles stay finite on the Worker and in the browser. If both a decimal column and separate DMS columns arrive in the same payload, set direction explicitly rather than relying on auto, which refuses ambiguous dual input. Failed tasks that return invalid_input do not consume prepaid balance, which keeps exploratory scripts cheap when users probe the range limits on purpose. After a successful round trip, a useful sanity check is that converting DMS to decimal and back recovers the same components within floating tolerance, and that decimal_degrees equals the signed combination of degrees plus minutes over sixty plus seconds over three thousand six hundred.
Integration use cases
Homework and exam checks for angle notation
Give students a DMS triple or a decimal angle and compare their hand conversion against a deterministic API or free browser result.
Technical questions
How is the decimal value computed from DMS?
decimal = sign(D) × (|D| + M/60 + S/3600), with the sign taken from the degrees component.