Number Base Converter
Convert a number between binary, octal, decimal and hexadecimal at once, with live validation and bit-width context for the value you typed.
Reading the group size, not the digits
The four fields stay in sync: type in any one and the others fill from the same value, so there is no "which one is authoritative" ambiguity. Binary is printed grouped in fours because that is how the eye parses it - each group is one hexadecimal digit, which is why the two columns line up character for character once you see it. The bits row reports the width the value needs, and the range row says whether it still fits in the standard containers: 8, 16, 32 or 64 bits, signed or unsigned.
That range row is the practical part. A value that fits in 8 unsigned bits but not 8 signed ones is exactly the situation that produces a wraparound bug, and seeing it stated next to the number is faster than working it out from the hex. Values beyond 64 bits are shown as out of standard range rather than converted, because JavaScript's safe integer ceiling is 2^53 and silently rounding past it would hand you a wrong answer.
Usage example
A device register manual describes a flag at bit position 5. Set binary to 00100000 and the hex row reads 20 - the value you actually write - while the decimal row reads 32, which is what a test assertion will compare against. The bits row confirms the flag fits comfortably in a byte and the range row says so for signed 8-bit too, so there is no wraparound concern.
For a colour coming out of the picker, the same tool splits the hex into its red, green and blue components: enter the six digits as hex and read the decimal row to get the channel values - or go straight to the HEX to RGB converter, which does that split and adds HSL. When the value belongs in a config file rather than a register, the JSON formatter is the next stop.
Frequently asked questions
Why do the four fields not accept a minus sign?
The converter handles non-negative integers - the case that covers registers, colour channels, ports and flags. Two's-complement signed representation is a separate concern with its own width rules, and showing a signed value here without that context would be misleading.
How large a number can it convert?
Up to JavaScript's safe integer ceiling of 9,007,199,254,740,991 (2^53 - 1). Beyond that the state row reports out of range instead of rounding, because a wrong answer is worse than a refusal.
What do "bits needed" and the range check mean together?
Bits needed is the width of your value; the range row checks it against the standard container sizes. If the value needs 8 bits unsigned but 9 signed, that is the wraparound case worth catching before it reaches code.
Related tools
HEX to RGB Converter
Convert HEX color codes to RGB and HSL with a live swatch and contrast hint.
Unix Timestamp Converter
Convert a Unix epoch timestamp into a readable UTC and local date, or turn any date and time back into epoch seconds and milliseconds - live as you type.
JSON Formatter
Format, validate and beautify JSON with error reporting and stable key ordering.