Degrees minutes seconds arithmetic calculator
18° 42′ 45″ plus 7° 28′ 30″ is 26° 11′ 15″, with the extra seconds and minutes carried over automatically. Subtraction works the same way, including answers below zero and fractions of a second. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Operation
- Add tax
- First degrees
- 18
- First minutes
- 42
- First seconds
- 45
- Second degrees
- 7
- Second minutes
- 28
- Sign
- positive
- Degrees
- 26
- Minutes
- 11
- Seconds
- 15
This degrees, minutes, and seconds arithmetic calculator combines two signed DMS angles without forcing you to convert them by hand. Choose addition or subtraction, enter each angle as degrees, minutes, and seconds, and receive a normalized result in which seconds and minutes are always below sixty. The calculator handles carries, borrows, negative answers, fractional seconds, and boundary values deterministically. It is useful for surveying, astronomy, navigation, geometry, and any workflow where angular measurements must remain in familiar sexagesimal notation.
Enter each angle without hiding its sign
Represent each operand with an explicit positive or negative sign followed by non-negative degrees, minutes, and seconds. Keeping the sign separate matters when an angle lies between zero and one degree: a value such as negative zero degrees, thirty minutes cannot reliably carry its sign in an ordinary numeric degrees field. The explicit sign makes that value unambiguous.
Degrees and minutes are whole numbers, while seconds may include a decimal fraction for measurements that need greater precision. Select add to combine the signed values, or subtract to remove the second signed angle from the first. Because subtraction acts on the entire second operand, subtracting a negative angle correctly becomes addition.
Inputs may use sixty minutes or sixty seconds as boundary values; the calculator carries those units upward when it normalizes the result. For example, sixty seconds becomes one minute, and sixty minutes becomes one degree. This makes the form tolerant of intermediate figures copied directly from field notes while preserving a clear, checkable interpretation of every component.
How carrying and borrowing are calculated
The calculator converts both DMS operands to signed total seconds before performing the selected operation. A degree contributes 3,600 seconds and a minute contributes 60 seconds, so this intermediate form lets ordinary signed arithmetic handle every carry and borrow consistently. After addition or subtraction, the absolute result is divided back into whole degrees, whole minutes, and remaining seconds.
The original result sign is then applied to the complete normalized angle. This method avoids fragile sequences of manual borrowing, such as taking one degree to create sixty minutes and then taking one minute to create sixty seconds. Suppose the seconds in an addition exceed sixty: the total-seconds method naturally places the excess in the minute component.
Suppose subtraction produces a negative answer: the calculator normalizes the magnitude first and reports one negative sign for the whole angle, rather than mixing negative component values.
Read and reuse the normalized result
Normalized means that minutes range from zero through fifty-nine and seconds stay from zero up to, but not including, sixty. Degrees hold every higher-order carry and are always returned as a non-negative magnitude; the sign field describes the direction of the complete angle. A zero result is reported as positive zero so downstream systems do not have to distinguish negative zero.
In a surveying adjustment, this result can feed the next bearing calculation. In astronomy, it can preserve familiar arc notation while still providing a scalar value for validation.
What you can do with it
Combine survey bearings
Add measured angular corrections and receive a normalized DMS angle ready for a field report or the next calculation.
Find an angular difference
Subtract one celestial, navigational, or geometric angle from another while preserving a clear sign and fractional seconds.
Check manual sexagesimal work
Verify carries and borrows across the sixty-second and sixty-minute boundaries without converting a worksheet by hand.
FAQ
What does one request cost?
The calculation is also available in the browser interface.
Can the answer be negative?
Yes. The sign applies to the complete normalized angle, while degrees, minutes, and seconds remain non-negative magnitudes.
Why are signs separate from degrees?
A separate sign represents angles such as negative 0 degrees 30 minutes without relying on a fragile negative-zero number.
Are fractional seconds supported?
Yes. Seconds may be fractional and are returned with stable rounding to at most nine decimal places.
What happens when I enter 60 seconds or 60 minutes?
The boundary value is accepted and carried into the next higher unit during normalization.
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-arithmetic \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"add","first_degrees":18,"first_minutes":42,"first_seconds":45,"second_degrees":7,"second_minutes":28,"second_seconds":30}'const res = await fetch("https://api.kit.forhosting.com/trig/dms-arithmetic", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"operation": "add",
"first_degrees": 18,
"first_minutes": 42,
"first_seconds": 45,
"second_degrees": 7,
"second_minutes": 28,
"second_seconds": 30
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/trig/dms-arithmetic",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"operation": "add",
"first_degrees": 18,
"first_minutes": 42,
"first_seconds": 45,
"second_degrees": 7,
"second_minutes": 28,
"second_seconds": 30
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/trig/dms-arithmetic", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"operation":"add","first_degrees":18,"first_minutes":42,"first_seconds":45,"second_degrees":7,"second_minutes":28,"second_seconds":30}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"operation":"add","first_degrees":18,"first_minutes":42,"first_seconds":45,"second_degrees":7,"second_minutes":28,"second_seconds":30}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/trig/dms-arithmetic", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"operation": "add",
"first_degrees": 18,
"first_minutes": 42,
"first_seconds": 45,
"second_degrees": 7,
"second_minutes": 28,
"second_seconds": 30
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "trig.dms_arithmetic",
"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.
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
Read and reuse the normalized result
The response contains the operation, the result sign, separate degrees, minutes, and seconds, signed total seconds, and a compact formatted DMS string. Use the component fields for subsequent calculations or structured storage, use total_seconds when comparing or sorting angular differences, and use the formatted value for reports or user interfaces. API calls cost $0.002 per request, and the deterministic algorithm uses no network service, random value, current date, or hidden external state.