Bearing to 32-point compass box
A bearing of 11.25° is NbE, North by East, one of the 32 points of the classical compass rose. Enter any heading in degrees to get its traditional label, the full name, its position on the rose and the edges of its 11.25° sector. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Bearing
- 11.25
- Bearing in
- 11.25
- Bearing deg
- 11.25
- Direction
- NbE
- Full name
- North by East
Classical navigation divided the full circle into thirty-two equal rose points known as boxing the compass, not merely the four cardinals or the sixteen half-winds common on modern dashboards. This capability takes any finite bearing in degrees, normalizes it onto the half-open interval from zero up to three hundred sixty, and returns the nearest of those thirty-two traditional labels such as NbE, NEbN, SWbS, or NWbW, together with the full English name used in marine and historical charts, the sector index from zero through thirty-one, and the angular bounds of the eleven-point-two-five-degree sector. Non-finite values including NaN and positive or negative infinity are rejected with a clear invalid input error so bad sensor dumps never masquerade as north.
How to use it and its practical limits
Call the free in-browser bearing to thirty-two-point compass box tool for classroom demos of boxing the compass, museum kiosks, and quick field notes without installing GIS software. Prefer the dedicated sixteen-point converter when your product only ever shows N through NNW without by-points; prefer this capability when users search for thirty-two-point boxing, NbE-style labels, or classical marine rose vocabulary. Authors shipping SDKs can map direction straight into UI badges and use index for sprite frames of a thirty-two-point rose graphic.
Document the zero-equals-north clockwise convention in your client so users who think in math-style angles measured from east counter-clockwise convert once before calling.
What you can do with it
Classical navigation training
Teach and quiz boxing the compass: convert any degree reading into the full thirty-two traditional rose names for drills, flashcards, and oral exams.
Sailing logs and marine charts
Label telemetry and track headings with NbE, SWbS, and other by-points used on traditional and training charts, not only the coarse sixteen-point set.
FAQ
What is boxing the compass?
Boxing the compass is the traditional naming of all thirty-two points of the rose, spaced every 11.25°, including by-points such as North by East and Northeast by North.
What happens if the bearing is NaN or Infinity?
Only finite numbers are accepted; non-finite values are rejected and not charged.
Is the bearing to 32-point compass box tool free?
The browser tool runs free on your device.
How is this different from the 16-point bearing-to-compass tool?
This capability returns the full classical thirty-two-point rose (including NbE, NEbN, and other by-points). The sixteen-point tool only returns N, NNE, NE… without the intermediate by-points.
What does a label like NbE mean?
NbE reads North by East: the point one step of 11.25 degrees east of north. These by-points sit between the sixteen familiar directions, which is how the classical rose reaches 32 points.
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/bearing-to-cardinal32 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bearing":11.25}'const res = await fetch("https://api.kit.forhosting.com/geo/bearing-to-cardinal32", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bearing": 11.25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/bearing-to-cardinal32",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bearing": 11.25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/bearing-to-cardinal32", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bearing":11.25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bearing":11.25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/bearing-to-cardinal32", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"bearing": 11.25
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bearing_to_cardinal32",
"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
How degrees map onto the 32-point compass rose
Zero degrees means north; ninety means east; one hundred eighty means south; two hundred seventy means west. Values outside zero to three hundred sixty are reduced modulo three hundred sixty, and negative headings wrap the same way, so a sensor that reports minus five point six two five still lands on North by West. Each sector is eleven point two five degrees wide; the implementation chooses the nearest center with standard half-up rounding and wraps three hundred sixty back to north. Send a required field named bearing as a JSON number or a numeric string. Aliases degrees, deg, azimuth, heading, and angle are accepted when your upstream schema uses those names. The thirty-two rose points sit on centers every eleven point two five degrees: N at zero, NbE at eleven point two five, NNE at twenty two point five, NEbN at thirty three point seven five, NE at forty five, and so on around to NbW at three hundred forty eight point seven five. On success you receive direction as the short classical label, full_name as the English phrase used when reciting the box, bearing_in as the finite value accepted, bearing_deg as the normalized angle on zero inclusive to three hundred sixty exclusive, index from zero through thirty-one, points equal to thirty-two, sector_center_deg, sector_from_deg, sector_to_deg, and method set to thirty_two_point_compass_rose. Identical finite inputs always produce identical JSON because the path is pure arithmetic with no network, no random seed, and no wall clock. This finer rose is the traditional full boxing used in classical navigation training, not the coarser sixteen-label set found on many consumer maps.
Validation, errors, and reading the response fields
The only hard rejection is a bearing that is not a finite number. Finite floating-point values including large magnitudes and scientific-notation strings that parse to a finite Number are accepted and then normalized. Use direction when a chart legend, status line, CSV column, or drill command needs a compact traditional label such as NEbE or WSW. Missing input, empty strings, booleans, objects, non-numeric text, NaN, and positive or negative Infinity all fail with invalid_input and are not charged after the engine rejects the request. Use full_name when a training manual, accessibility label, or spoken readout needs Northeast by East spelled out in classical English. Use bearing_deg when you must show the wrapped angle next to the label, and bearing_in when audit logs should preserve the raw reading before modulo. Sector bounds describe the angular window associated with the chosen center under the half-width of five point six two five degrees, with north wrapping across the zero meridian so sector_from_deg is three hundred fifty four point three seven five and sector_to_deg is five point six two five. This product does not convert a compass name into degrees; that reverse search intent is a separate endpoint. It also does not coarsen to a sixteen-point-only landing, compute a heading from two coordinates, or solve great-circle geodesy on a sphere.
API usage, pricing, workflows, and practical limits
Use the prepaid API when a sailing log importer, historical chart annotator, drone telemetry normalizer, or logistics dashboard needs a stable contract under KIT balance at $0.002 per successful item. Pair the endpoint with a coordinate bearing calculator when you first obtain a heading from two points, then label it with the full classical rose for humans; keep the steps separate so each landing matches a distinct search intent. There is no per-request size limit beyond ordinary JSON, and the work is a handful of floating-point operations inside a Worker isolate, so latency stays analytic and predictable.
Integration use cases
Museums, games, and automated tests
Interactive exhibits and CI fixtures pin expected classical labels for known angles and assert invalid_input when non-finite bearings are submitted.
Technical questions
How do I convert a bearing in degrees to a 32-point compass direction?
Send JSON with bearing set to a finite number (for example 11.25). The response includes direction (NbE), full_name (North by East), normalized bearing_deg, and sector index.