ToolSura
    ToolSura
    Home
    Tools
    Blog

    Convert between binary, hex, octal, and decimal instantly

    Screenshot of the Base Conversion (bin/oct/hex) tool
    ← More in Dev Tools tools
    Last Updated: September 25, 2026
    Verified 100% Client-Side
    Active Since: 2024

    Binary, octal, and hexadecimal haunt everyday code: file permissions, color codes, memory dumps, and compact identifiers all wear different bases. A fast binary to hex converter working in your browser turns that constant mental translation into a solved problem. The deeper win is understanding why four bases exist at all, and honestly that understanding takes minutes.

    Privacy matters here too. Nothing is uploaded when you convert; your input never leaves your device because the entire widget runs client side, a setup the page describes as verified 100% client-side with a zero-knowledge architecture (ToolSura). Production identifiers, permission strings, and half-written snippets all stay local.

    Key Takeaways

    • Hex packs four bits per digit and octal packs three, so both map cleanly from binary.
    • Prefixes 0b, 0o, and 0x declare the base; bare leading zeros caused famous bugs.
    • parseInt("077") gives decimal 77, because legacy octal lives only in literals like 0777 (MDN).
    • Exact math ends at 9,007,199,254,740,991; switch to BigInt beyond that cliff (MDN).
    • ToolSura's base converter runs fully client side and converts as you type.

    Why Do Programmers Juggle Four Number Bases?

    The workload is heavy: bignumber.js logged 56,666,610 downloads during the week of August 16 to 22, 2026 per the registry API, a figure transitive dependencies inflate but which still dwarfs most library niches. Developers convert bases constantly because each base serves a different master.

    Binary mirrors the hardware: a transistor is on or off, so bits are the machine's native tongue. Decimal suits human bookkeeping. Hexadecimal compresses beautifully, letting any eight-bit byte become two characters, which is why memory dumps, hashes, and color codes wear hex. Octal packs three bits per digit, a size that fit older twelve, twenty-four, and thirty-six bit machines and still governs Unix permissions today.

    What Is a Radix and How Does Positional Notation Work?

    Every base is one machine with different gears. MDN defines the radix as the base of a numeral system, and JavaScript's toString accepts radixes from two through thirty-six while throwing a RangeError outside that window (MDN). Positional notation simply means a digit's value depends on where it sits.

    Work two examples and the pattern locks in. The binary string 1101 equals decimal thirteen because it carries one eight, one four, no two, and one one (RapidTables). The hex string 62C equals 1580 because six times 256 plus two times sixteen plus twelve lands exactly there. Bases above nine borrow letters a through f for digits ten through fifteen (MDN).

    Power Value
    2^4 16
    2^8 256
    2^10 1024
    2^16 65,536
    2^32 4,294,967,296
    2^53 - 1 9,007,199,254,740,991

    Memorize that ladder and half of all base conversations become mental arithmetic.

    What Is the Nibble Trick Behind Binary to Hex Conversion?

    Four binary digits equal one hex digit because sixteen is exactly two to the fourth power, a mapping documented identically by RapidTables, by Teleport's tutorial material, and by ToolSura's own FAQ (RapidTables). The whole algorithm compresses into four verbs: split, weight, sum, substitute.

    Try it live. Take 1101101010, pad the left side to 0011 0110 1010, then weigh each nibble at eight, four, two, one. You get three, six, ten, and ten becomes A, yielding 36A in hex. Verify by expanding: 36A equals decimal 874, precisely what the original ten bits encode.

    Binary Hex Octal
    0001 1 1
    0110 6 6
    1010 A 12
    1111 F 17

    Why Do Three Bits Pack Into One Octal Digit?

    Three bits produce exactly eight combinations, which is one octal digit, a grouping ToolSura's FAQ pairs with the nibble rule (ToolSura). Split 110101 into 110 and 101 and it reads as 65 in octal, which expands to decimal 53, matching the original bits bit for bit.

    Octal looks like a museum piece until you touch a terminal. Permission masks, tar archive headers, and legacy C literals all lean on it. Because eight is not a power of sixteen, octal and hex never align neatly, so the two coexist for historical rather than mathematical reasons. That history bites in JavaScript, as the next sections show.

    What Do the 0b, 0o, and 0x Prefixes Mean?

    Modern JavaScript declares bases with prefixes: 0b marks binary, 0o marks octal, and 0x marks hexadecimal, all case-insensitive and all accepting underscore separators such as 0b1010_0001_1000_0101 (MDN). Prefixes cost nothing at runtime and buy total clarity for readers.

    Prefix Base Literal Value
    0b 2 0b10000000000000000000000000000000 2147483648
    0o 8 0O755 493
    0x 16 0xFFFFFFFFFFFFF 4503599627370495

    The same page documents 0o644 as decimal 420, handy when translating permission modes. One BigInt wrinkle deserves a sticky note: a BigInt literal cannot begin with a bare zero, so 0755n throws a SyntaxError while 0o755n works (MDN).

    Which JavaScript Pitfalls Trip Up Base Conversion?

    JavaScript carries four documented traps that quietly corrupt base handling, and each traces to a specific MDN page rather than forum folklore (MDN). Knowing them separates confident reviewers from bug farmers.

    The parseInt Truth Most Developers Get Wrong

    Current MDN is blunt: parseInt does not treat a leading zero as octal. parseInt("077") returns decimal 77, not 63. With no radix argument, only 0x and 0X are recognized as prefixes; everything else parses as decimal, and the docs caution that inference does not always default to ten (MDN). A radix outside two through thirty-six yields NaN, while parseInt("-0XF", 16) cleanly returns -15.

    The Legacy Literal Trap

    Literals play by older rules. A bare leading-zero literal such as 0777 parses as legacy octal in sloppy mode and equals 511, while 0888 falls back to decimal 888; strict mode rejects both forms as syntax errors (MDN). Modern code should simply spell 0o777 and end the ambiguity forever.

    Bitwise Operations Chop Everything to 32 Bits

    Bitwise operators treat their operands as sets of 32 bits and return standard JavaScript numbers. Anything wider loses its most significant bits, and shift counts wrap modulo thirty-two, so 100 >>> 32 behaves exactly like 100 >>> 0 (MDN). Hex masks beyond eight digits deserve extra suspicion.

    The MAX_SAFE_INTEGER Cliff

    Plain numbers stay exact only up to 9,007,199,254,740,991. The classic demonstration: MAX_SAFE_INTEGER + 1 === MAX_SAFE_INTEGER + 2 evaluates true, which is arithmetic heresy (MDN). Guard hot paths with Number.isSafeInteger() and reach for BigInt, whose literals happily carry the same 0b, 0o, and 0x prefixes.

    How Does Python Handle the Same Jobs?

    Python centralizes parsing in int(), which accepts bases zero and two through thirty-six, honors prefixes, signs, whitespace, and underscore separators, and auto-detects the base from prefixes when you pass zero, though that mode refuses bare leading zeros (Python docs).

    Job Expression Result
    Parse hexadecimal text int('FACE', 16) 64206
    Auto-detect from prefix int('0xface', 0) 64206
    Parse binary digits int('01110011', 2) 115
    Format with prefix format(42, '#b') 0b101010

    Output side, bin(), oct(), and hex() return prefixed strings with the sign placed before the prefix: bin(-10) yields -0b1010 (Python docs). The format spec mini-language adds 'b', 'o', 'x', 'X', and 'd' options, a '#' flag for prefixes, and an '_' flag that groups digits every four positions (Python docs).

    What About Negative Numbers and Fractions?

    Sign placement is a documented difference between languages. JavaScript's toString keeps a plain minus sign, so (-10).toString(2) returns -1010, which MDN pointedly notes is not the two's complement (MDN). Python returns -0b1010 for the same input. Neither output is a true bit pattern for negatives.

    Fractions get messier still because floating-point math approximates. MDN's own example shows (1000000000000000128).toString() printing as "1000000000000000100" (MDN). ToolSura sidesteps that swamp by design: its FAQ says the converter is optimized for whole numbers only, so fractional bases need dedicated math libraries rather than a quick web widget.

    Where Do Unix Permission Numbers Like 755 Come From?

    Octal owns Unix permissions outright. The chmod man page defines a numeric mode as one to four octal digits derived by adding up bits with values 4, 2, and 1 (man7.org). Read counts four, write two, execute one, summed per owner, group, and other.

    Applying that documented rule: rw-r--r-- works out to 644, while rwxr-xr-x lands on 755. A leading fourth digit covers special bits: setuid adds four, setgid two, sticky one. The sticky bit on directories prevents unprivileged users from removing or renaming files unless they own the file or the directory, the classic arrangement behind shared /tmp (man7.org). Curious what 755 means in decimal? It is 493, and converting between those views is exactly what a base converter is for.

    When Do Developers Convert Bases in Daily Work?

    Compact ID libraries hint at steady demand: base-x recorded 11,095,967 downloads during the week of August 16 to 22, 2026 per the registry API, with the standing caveat that transitive dependencies inflate every npm figure.

    Look around a normal workday and conversions appear everywhere. Color values travel as #hex codes but render as RGB triplets; ToolSura ships a dedicated hex to RGB converter for that hop. UUIDs encode their fields in hex, which its UUID validator dissects for you. Epoch timestamps are simply big integers begging for a timestamp converter. Memory addresses, protocol dumps, and hash digests read far better in hex than in raw bits, a readability point Teleport's educational material emphasizes (Teleport). Even tidy JSON payloads keep those numbers legible once formatted properly.

    Can You Convert Binary to Hex by Hand?

    Manual conversion is a two-step dance: regroup, then substitute. BinaryHexConverter teaches the same routine step by step and even publishes fractional worked examples, which mostly demonstrate how fiddly hand math becomes past the decimal point (BinaryHexConverter).

    The integer recipe fits in four lines:

    1. Pad the bit string on the left so its length divides evenly by four.
    2. Split it into nibbles working from the right.
    3. Weight each nibble at eight, four, two, one and sum the marked positions.
    4. Swap sums of ten through fifteen for letters A through F.

    Going the other direction, decimal to binary, uses repeated division by two while collecting remainders. Both directions reward practice, though neither beats typing into a live widget at midnight before a demo.

    How Does the ToolSura Base Converter Work?

    Four dropdowns define the entire interface: choose an input base and an output base among Binary, Octal, Decimal, and Hexadecimal, then simply type. Conversion happens in real time with no Convert button, and mismatched characters trigger an Invalid Input message that names the problem instantly (ToolSura).

    Any of the four bases converts to any other in one hop. The tool targets whole numbers only, per its own FAQ, and handles 32-bit, 64-bit and larger values. It is built for numbers standard calculators cannot manage, so sanity-check anything mission critical against BigInt in code.

    Two things are worth knowing before you rely on it: output arrives without separators or automatic 0b/0o/0x prefixes, so add those yourself when pasting into source, and negative-number support is not documented. Everything runs locally in your browser, nothing is transmitted to a server, and the tool has been live since 2024.

    How Does It Compare With Other Converters?

    Among documented competitors, none combine a four-base any-to-one widget, button-free live conversion, explicit client-side privacy messaging, and large-integer positioning in one place. That gap synthesis falls straight out of a feature-by-feature comparison:

    Site Documented Strengths Documented Gaps
    RapidTables Five-way dropdowns including text, digit grouping toggle, dual outputs No privacy stance, no FAQ section
    BinaryHexConverter Five-step method, byte chart, worked fractional examples One direction per page
    calculator.net Binary arithmetic plus binary-decimal conversion No hex or octal on the page
    Teleport Deep tutorial, code samples, FAQ Widget did not render during our visit, so its tooling stays unverified

    RapidTables comes closest functionally but publishes no privacy stance (RapidTables). BinaryHexConverter splits its two directions across separate pages (BinaryHexConverter). calculator.net stays deliberately narrow (calculator.net). Teleport's writing is excellent though its embedded widget failed to load during our visit, so we credit the content and hedge the tooling (Teleport).

    Frequently Asked Questions

    Seven focused answers accompany this guide in the FAQ block below. A sampler before you scroll: parseInt("077") really does return 77 (MDN), octal earns its keep through three-bit grouping, and exact JavaScript arithmetic ends at 9,007,199,254,740,991.

    Related Tools

    Base conversion rarely travels alone, so keep these companions bookmarked:

    • Hex to RGB Color Converter: translate #hex codes into RGB triplets and back.
    • Base62 Encoder Decoder: URL-safe compact IDs when nibble alignment does not matter.
    • UUID Validator: check and dissect the hex-heavy UUID format.
    • Timestamp Converter: turn epoch integers into human-readable dates.
    • JSON Formatter Validator: tidy the payloads those integers travel inside.
    • Word Counter: because text metrics matter just as often.

    And when the next permission mask or memory address appears mid-task, the free base converter is one click away."

    Frequently Asked Questions

    How do I convert binary to hex by hand?

    Split the binary string into groups of four from the right, padding the leftmost group with zeros. Give each group weights of eight, four, two, and one, add the marked weights, then swap ten through fifteen for letters A through F. ToolSura's converter follows this exact nibble method automatically.

    Why does octal still exist?

    Octal packs three binary digits into one character, which fit neatly on old machines with twelve, twenty-four, or thirty-six bit words. It survives today in Unix file permissions and in legacy JavaScript literals, where 0777 quietly means octal and evaluates to decimal 511 in sloppy mode.

    What is a radix?

    A radix is the base of a positional numeral system: the count of unique digits it uses. Binary has radix two, octal eight, decimal ten, hexadecimal sixteen. JavaScript APIs accept radixes from two through thirty-six and throw a RangeError outside that range, so validation comes built in.

    Why should I always pass a radix to parseInt?

    Without an explicit radix, JavaScript infers the base from the string itself, and MDN warns that inference does not always default to ten. Passing parseInt(value, 2), parseInt(value, 8), or parseInt(value, 16) states your intent outright, removes guesswork, and blocks the silent misparses that surface during code review.

    Can I convert negative numbers or decimals?

    Language behavior differs: JavaScript's toString keeps a plain sign, so (-10).toString(2) returns -1010, while Python places the sign before the prefix and returns -0b1010. Neither prints a true two's complement pattern. Fractional values drift under floating point math, and ToolSura deliberately supports whole numbers only, for reliability.

    How large a number can the converter handle?

    Plain JavaScript numbers stay exact up to 9,007,199,254,740,991, then silently lose precision; BigInt takes over beyond that ceiling. The tool's own page claims support for 32-bit, 64-bit, or even larger values, and ToolSura states it neither stores nor logs the values you enter, keeping oversized inputs private.

    Hex or Base62: which encoding should I choose?

    Hex aligns perfectly with binary because one hex digit equals exactly four bits, making it ideal for debugging, colors, and hashes. Base62 uses sixty-two URL-safe symbols and produces shorter strings that survive in links, though the tradeoff is losing any direct nibble mapping. ToolSura offers a dedicated Base62 encoder decoder for that job.

    Verified Technical Content: ToolSura Dev Team

    Senior Full-Stack Engineers • Last reviewed: September 25, 2026

    Expertise: Client-Side Security, WebAssembly, Next.js Architecture, Privacy-First UX. ToolSura utilities are peer-reviewed for security and high-performance V8 execution standards.

    ToolSuraPrivacy-First Tools

    Free utilities that run in your browser. No trackers, no accounts, no uploads.

    All Systems Operational

    Product

    • Free Online Tools
    • Contact
    • FAQs
    • About

    Legal

    • Privacy Policy
    • Cookie Policy
    • Terms & Conditions

    Resources

    • Blog
    • Brand
    • Help

    Social Links

    • Bluesky
    • Mastodon
    • X
    • Product Hunt
    • GitHub
    • LinkedIn
    • DEV.to
    • YouTube

    © 2026 ToolSura. Free tools that run in your browser.

    Remote-First / Based in India

    Technical Manifesto

    Private • Client-Side • No Uploads

    ToolSura on Nick Launches
    Browser-Native
    Privacy-First
    Home
    Tools
    Base Conversion (bin/oct/hex)

    Convert between binary, hex, octal, and decimal instantly

    Convert numbers between binary, octal, decimal, and hexadecimal.

    Converted: 255 decimal

    Type in any base, read all four

    BigInt math underneath — the full unsigned 64-bit range converts exactly, no floating-point drift.

    Decimal0–9
    Hexadecimal0–9 A–F
    Octal0–7
    Binary0–1

    Bits

    11111111

    Related Dev Tools tools

    View all tools

    HTML/CSS/JS Minifier

    Strip whitespace and comments from HTML, CSS, and JS to cut file size before deploy.

    Regex Tester

    Test regular expressions against sample text with live match highlighting.

    Timestamp Converter

    Translate Unix timestamps to dates and back, in UTC and your local timezone.

    UUID Generator

    Mint random version-4 UUIDs for database keys and request IDs, singly or in bulk.

    ←Back to all tools