Images Editing Tools

Simple, free image helpers you can run straight in the browser. Pick colours, convert formats and prepare visuals for the web without installing heavy software.

What "Images Editing Tools" Covers Here

This category holds two tools, and both of them are about color, not images in the crop-and-filter sense. The Color Picker lets you dial in an exact color visually or by number and read it back in three formats at once. The RGB to Hex Converter takes RGB numbers you already have and converts them into a hex code, a formatted RGB string, and an HSL string. Between the two, they cover the two most common starting points anyone has when they need a color value in a specific format: either you're starting from nothing and need to pick one, or you're starting from a reading someone else gave you and need to convert it.

Worth saying plainly, since the category name invites a different expectation: neither tool here edits an actual image file. There's no crop, resize, compress, filter, or background-removal function anywhere in this category. If you landed on this page hoping to edit a photo, you're in the wrong place, and it's better to know that in the first ten seconds than after scrolling past a page of copy about hex codes looking for an upload button that isn't there. What's here instead is genuinely useful for a narrower, adjacent job: getting a color's exact value into whatever format your CSS, design tool, or codebase actually needs.

Why Color-Format Literacy Matters for Developers and Designers

Almost nobody stays in one color format for an entire project, and that's not a design choice anyone made on purpose. It's a byproduct of the tools involved. A brand guideline PDF from a client might list a logo color as three RGB numbers. Open that same color in Figma and copy it, and Figma hands you a hex string by default. Open your browser's dev tools and inspect an element's computed background color, and getComputedStyle reports it back as an rgb(...) string, even if the original CSS was written with hex. Each of these tools has its own default notation, and none of them coordinate with each other.

HEX is the format CSS and HTML expect most often. It's what you'll type into a background-color or color property in a stylesheet, what most design software defaults to when you copy a swatch, and what a WordPress theme customizer's color field usually wants. It's compact: one six-character string instead of three separate numbers to keep track of.

RGB is the format that matches how a screen actually renders color under the hood, which is why it shows up in JavaScript canvas code, in image-processing libraries, and in exactly the places named above: Photoshop's color panel, Figma's readout before you copy it as hex, and a browser's dev-tools computed-style panel. If you've ever pulled a color reading from any of those three sources, you were looking at RGB numbers, whether or not the tool called them that.

HSL solves a specific, recurring annoyance with both of the formats above: adjusting a color's lightness or saturation predictably. In RGB, making a color 10% darker means recalculating red, green, and blue together in some proportion, and there's no single number you can just nudge down. In HSL, the same adjustment is one slider move on the lightness value, with hue and saturation left alone. That's a genuinely different way of describing the same color, built around how humans actually think about adjusting one ("make it a bit darker") rather than how a screen renders it (three separate light intensities).

None of this is abstract color theory for its own sake. It's the reason a front-end developer needs to convert a client's RGB brand-guideline numbers into hex before a CSS variable will accept them, why a designer translating a brand kit into code-ready values needs to know both formats say the same thing, and why "just eyeball it and get close" produces the kind of small, hard-to-spot inconsistency where a button ends up very slightly bluer than the header it sits under. Getting the exact numeric value right, once, and reusing it everywhere removes that drift entirely — which is the actual job both tools in this category exist to do.

Design systems make this even more concrete. A CSS custom property like --brand-blue: #3B82F6; is only as reliable as the value typed into it, and once that variable is referenced across a stylesheet, a single wrong digit propagates everywhere the variable is used. Teams building out a small palette of tints and shades from one base color run into the format question constantly too: HSL is the natural notation for that specific task, since generating a lighter or darker variant is one number change (lightness) rather than a three-channel recalculation, which is exactly why HSL shows up so often in modern CSS custom-property setups even when the final rendered value gets converted back to hex or RGB for browser compatibility elsewhere in the codebase.

It's also worth being clear that HEX, RGB, and HSL aren't the only notations in circulation. Newer CSS color functions such as oklch() and lab() exist specifically to address perceptual-uniformity problems that HSL doesn't solve (equal numeric steps in HSL don't always look like equal visual steps to the human eye). Neither tool in this category outputs those newer formats; they're mentioned here only so the format landscape makes sense as a whole, not because either tool needs to support them to be useful for the HEX/RGB/HSL conversions most day-to-day CSS and design-tool work still runs on.

Understanding the Format Landscape: HEX, RGB, HSL, and Where CMYK Fits

Four notations show up constantly in any conversation about color, and it helps to know which one is built for which job before you reach for either tool on this page.

HEX

A hex code is a six-character string, prefixed with #, made of three pairs of hexadecimal digits — one pair each for red, green, and blue. Each pair runs from 00 (none of that channel) to FF (the maximum, 255 in decimal), so #FF0000 is pure red and #FFFFFF is white. Both tools on this page output hex: the Color Picker's HEXA field, and the RGB to Hex Converter's "Hex color code" output. Neither one produces the shorter three-character shorthand (#3BF instead of #33BBFF) that CSS also accepts — both always output the full six-digit form, which is the safer default since the shorthand only works for a narrow subset of colors where each channel's two digits happen to be identical.

RGB (and RGBA)

RGB writes the same three channels as plain base-10 numbers, 0 to 255 each, instead of hex pairs. rgb(59, 130, 246) means 59 units of red, 130 of green, 246 of blue. This is the format the RGB to Hex Converter takes as its only input — type numbers into its three fields, or drag its three linked sliders, and that's the entire starting point for a conversion. The Color Picker also exposes RGB, but as one of nine synced fields you can edit directly (R, G, B, alongside H, S, V, L, alpha, and hex), any of which updates all the others. Add a fourth value between 0 and 1 for opacity and you get RGBA, which the Color Picker outputs (once you lower its alpha slider below full) but the RGB to Hex Converter does not — it has no alpha channel anywhere in its interface.

HSL (and HSLA)

HSL describes a hue angle around a 360-degree color wheel, plus a saturation percentage and a lightness percentage. The RGB to Hex Converter computes and displays an HSL string as one of its three outputs, alongside hex and RGB, every time you click its Convert button. The Color Picker exposes HSL more deeply: it actually opens in HSL picking mode by default, with a draggable 2D area for saturation and lightness plus a separate hue slider, and its read-back panel shows an HSLA value once alpha is involved. If a teammate hands you a color as an HSL string and you need to move to a different format, the Color Picker's synced fields handle that directly; the RGB to Hex Converter cannot take an HSL string as input at all — it only accepts RGB numbers going in.

CMYK — and why neither tool here touches it

CMYK is a different kind of format entirely, based on ink rather than light. Cyan, magenta, yellow, and black (the "K") are the four inks a commercial printer mixes to lay down a color on paper, and the percentages describe how much of each to use. It matters for print production — business cards, packaging, brochures — because a printer produces color by absorbing and reflecting light off pigment, which behaves differently from a screen emitting colored light directly. A color that looks correct in RGB on a monitor can shift once it's actually printed.

Neither the Color Picker nor the RGB to Hex Converter calculates or displays a CMYK value. That's a deliberate boundary worth stating honestly rather than treating as an oversight: converting screen color to accurate print color depends on a specific printer's and paper stock's actual color profile, which is a job for a dedicated print-color tool or your print vendor, not a generic on-screen RGB/hex/HSL converter. If your project is headed to a print shop, treat any value you get from either tool here as a screen-color reference point, not a print-ready CMYK conversion.

FormatExampleBuilt forOutput by either tool here?
HEX#3B82F6CSS, HTML, most design-tool "copy color" defaultsYes — both tools
RGB / RGBArgb(59, 130, 246)Screen rendering, canvas/JS color math, transparencyRGB: both tools. RGBA: Color Picker only
HSL / HSLAhsl(217, 91%, 60%)Predictable lighten/darken/saturate adjustmentsHSL: both tools. HSLA: Color Picker only
CMYKc:76 m:47 y:0 k:4Commercial print production (ink, not light)No — neither tool

The 2 Tools in This Category

Color Picker

What it solves: you don't have exact numbers for a color yet, or you have a starting value in any of several formats and want to explore and adjust it visually while reading back the result in every format at once.

How it actually works: the whole widget is 100% client-side JavaScript — no server round-trip, no upload, no page reload. It opens in HSL picking mode: a large draggable 2D area for saturation and lightness, a separate hue slider, and an alpha slider for transparency. Alongside that sit nine live, editable numeric fields wired to the same underlying color — H, S, V, L, R, G, B, alpha, and hex — and changing any one of them updates all the others instantly. A "CSS Color" panel next to the picker shows three read-back fields: RGBA, HSLA, and HEXA, each with a small copy icon beside it. That icon selects the field's text so you can copy it with Ctrl+C or Cmd+C; it doesn't write to the clipboard automatically on its own. There's also a drag-and-drop canvas area below the main picker where you can pull out extra color chips to hold two or three candidates on screen for a side-by-side comparison — that area is session-only and resets the moment you reload the page.

When to reach for it: matching a brand color across a whole site from a single hex code a style guide gave you, dialing in a color by eye and needing all three formats ready for whichever part of a codebase needs them next, or building a small set of tints and shades of one base color by nudging the lightness value up or down while hue and saturation stay fixed.

Not a fit if: you're trying to extract a color from an uploaded photo or a screenshot. There's no image upload, no FileReader, and no pixel-sampling code anywhere in this tool — it's a manual dial-in-a-value tool, not an eyedropper for existing images. There's also no CMYK output and no built-in accessibility contrast calculation; it hands you accurate color values, not a print conversion or a WCAG pass/fail.

RGB to Hex Converter

What it solves: you already have specific RGB numbers from somewhere else — a screenshot, Photoshop's color panel, Figma, a browser's dev tools — and you need the equivalent hex code and HSL string quickly, without opening a larger picker interface.

How it actually works, verified directly against this tool's own code: the interface gives you three number inputs (red, green, blue, each 0-255) and three matching jQuery UI sliders, linked to each other in both directions — type a number and the matching slider moves, drag a slider and the matching number field updates. Moving a slider also updates a live color-swatch preview instantly. That's where the live behavior stops, though: the three actual output fields — Hex color code, RGB color code, and HSL color code — only populate once you click the explicit "Convert" button. Dragging a slider by itself changes the swatch but does not recalculate those three text outputs. This is a one-directional tool: there's no hex-input field anywhere in it, so you cannot paste a hex code in and get RGB back out; RGB numbers are the only input it accepts. Values are clamped to the 0-255 range automatically, and an empty field is treated as 0. There's also no copy button — the three output fields are plain readonly text inputs, and copying means selecting the text yourself.

A specific correction worth stating plainly: this tool's own about-the-tool description (on its individual tool page, not yet updated as of this hub) currently claims it converts both directions, updates live with no button needed, and has a copy button. None of those three claims match what the tool's actual code does. This hub describes only what was verified directly from the live code, not from that description.

When to reach for it: you already have RGB numbers in hand from another source and just need hex and HSL fast, without the extra visual-picking interface. Type three numbers, click Convert, done.

Not a fit if: your starting point is a hex code or an HSL string rather than RGB numbers — there's no field here that accepts either as input. It's also not a fit if you expect it to update live as you drag; the swatch updates instantly, but the three text outputs need the Convert click. Use the Color Picker instead for either of those situations — its synced fields accept hex or HSL input directly, and every read-back field updates live with no button to press.

Comparison at a Glance

ToolStarting point it acceptsOutput formatsLive or button-triggeredBest for
Color PickerHex, RGB, HSL, or a visual pick — any of themHEX, RGB(A), HSL(A)Fully live — every field updates instantly as you edit any otherExploring/adjusting a color and needing every format at once
RGB to Hex ConverterRGB numbers onlyHEX, RGB (string), HSL (string)Swatch updates live; the 3 text outputs need an explicit Convert clickAlready have RGB numbers, want a fast one-way conversion

The practical difference isn't which formats each tool can produce — both end up giving you hex and HSL. It's what each one accepts as a starting point and how much interface stands between you and the answer. The Color Picker is built for exploring and adjusting; the RGB to Hex Converter is built for a specific, narrower job done fast when you already have the input it wants.

Practical Workflows

Picking a brand color from scratch and getting every format at once. Say a style guide gives you a single hex code for a brand's primary color, and you need that same color available as RGB for a canvas function and as HSL for building a couple of lighter tints. Open the Color Picker and type the hex code straight into its hex field. Every other field — H, S, V, L, R, G, B, and alpha — updates immediately to match, and the CSS Color panel shows the RGBA and HSLA equivalents right away. From there, nudging the L (lightness) field up a few points and reading the new hex/RGB values off the panel gives you a lighter tint of the exact same hue and saturation, which is a common step when a design system needs several related shades of one base color. Copy whichever format you need using the copy icon next to each field, remembering that it selects the text rather than copying it automatically — press Ctrl+C or Cmd+C to finish the copy.

Converting RGB numbers you already have, fast. This is the more common real-world starting point for the RGB to Hex Converter: you've already pulled an RGB reading from somewhere — Photoshop's color panel, a Figma layer, a browser's dev-tools computed-style output for an element — and you just need the hex equivalent to paste into a CSS rule or a design-token file. Type the three numbers into the Red, Green, and Blue fields (or drag the matching sliders, watching the live swatch confirm you've got the right shade), then click the Convert button. The Hex color code, RGB color code, and HSL color code fields populate together. Since there's no copy button, select the text in whichever output field you need and copy it manually before pasting it into your stylesheet or code editor. If the color isn't quite right, adjust one channel and click Convert again — the swatch updates as you drag, but the text outputs need that explicit click every time you want them refreshed.

When a teammate hands you the "wrong" format. A common friction point: someone pastes a color into a chat message or a design ticket as an HSL string, but the CMS field or CSS rule you're working in only accepts hex. The RGB to Hex Converter can't help here directly — it has no field that accepts HSL input at all, only RGB numbers. The Color Picker handles this instead: its H, S, and L fields accept the exact numbers from the HSL string directly, and the HEXA read-back field gives you the hex equivalent the moment you finish typing them in. The same logic runs in reverse if someone hands you a hex code but you need HSL to make a lightness adjustment — type the hex into the Color Picker's hex field, and the H, S, and L fields update to match, ready for you to nudge the lightness value from there.

Common Mistakes with Color-Format Conversion

  • Dropping the leading # on a hex value. CSS and most design tools expect the hash symbol as part of the value (#3B82F6, not 3B82F6) — if a paste isn't registering as a color anywhere, that's often the first thing worth checking.
  • Assuming a plain hex code carries transparency. Standard six-digit hex has no alpha channel built in. If you need a semi-transparent version of a color, use RGBA or HSLA (both available from the Color Picker) or an 8-digit hex variant, rather than trying to fake transparency by picking a lighter shade of the same hex color — the two aren't equivalent once the element sits over different backgrounds.
  • Transposing two digits or two numbers by accident. A copy-paste slip when typing an RGB or hex value in by hand — swapping two digits, or two channel numbers — produces a completely different, sometimes very off, color. Both tools show a live color swatch specifically so this kind of mistake is visible immediately rather than only showing up later once the color ships to a live page.
  • Judging a color on a single, uncalibrated screen. Monitor calibration varies enough that a color which looks right on one display can read slightly warmer, cooler, or darker on another. For anything brand-critical, it's worth double-checking the exact hex or RGB value against a second display, or against the style guide's own stated number, rather than trusting one screen's rendering alone.
  • Expecting either tool to pull a color out of an uploaded photo. This is the single most common mismatch between what people search for under "color picker" and what this specific tool does. Neither tool in this category reads pixels from an image file — there's no upload path in either one. If you need to extract an exact color from an existing photo or screenshot, you'll need a dedicated image-color-extraction tool or your browser/OS's own built-in eyedropper (several modern browsers include one) to get the RGB or hex reading first, and then bring that value here if you want it converted or double-checked in another format.
  • Forgetting the RGB to Hex Converter needs a fresh Convert click after every change. Dragging a slider updates the color swatch instantly, which can make it look like the whole tool is live. It isn't. If you nudge a channel value after already clicking Convert once, the Hex, RGB, and HSL text fields still show the previous result until you click Convert again — a value copied straight after adjusting a slider, without re-clicking, is the old color, not the new one.

Which Tool Do You Actually Need

  • "I have a color roughly in mind but no exact numbers yet." Color Picker. Drag inside the visual picking area or type into any of its nine fields, and read the result back in every format at once.
  • "I already have RGB numbers from somewhere else and just need hex or HSL, fast." RGB to Hex Converter. Three fields, one Convert click, done — faster than opening the larger picker interface for a job this narrow.
  • "Someone gave me a color in a format I can't use directly — an HSL string but I need hex, or vice versa." Color Picker. Its synced fields accept hex, RGB, or HSL as a starting point and convert to all three formats at once; the RGB to Hex Converter only accepts RGB numbers in.
  • "I need to extract a color from a photo or a screenshot." Neither tool in this category does that. You'll need a dedicated image-color-extraction tool or a browser/OS eyedropper first, then bring the resulting number here if you want it converted or double-checked.
  • "I need a CMYK value for a print job." Neither tool calculates CMYK. Use a dedicated print-color tool, or get the conversion from your print vendor, since accurate screen-to-print conversion depends on the specific printer and paper stock.

Frequently Asked Questions

Are both tools in this category actually free to use?

Yes. Neither the Color Picker nor the RGB to Hex Converter requires an account, a signup, or a payment. Both are free the same way the rest of the tools on this site are — available directly on the page, no gate in front of either one.

Do either of these tools store or save the color values I enter?

No. Both tools run entirely client-side in your browser — there's no upload, no server round-trip for the color math itself, and nothing gets stored anywhere. The Color Picker's drag-and-drop comparison canvas is session-only and clears the moment you reload the page; there's no account or save feature on either tool to fall back on if you want to keep a value for later.

Can I convert a hex code back to RGB using the tools in this category?

It depends which tool you use. The Color Picker can — type a hex code into its hex field and its R, G, B fields (along with everything else) update to match instantly. The RGB to Hex Converter cannot: it has no hex-input field anywhere in its interface and only accepts RGB numbers as a starting point, converting one-way into hex and HSL.

Why is there no CMYK option on either tool?

CMYK is an ink-based format built for commercial print production, not a screen-color format, and accurate conversion from screen color to print-ready CMYK depends on the specific printer and paper stock involved. Neither tool here calculates or displays it. If a project is headed to a print shop, get the CMYK conversion from a dedicated print-color tool or your print vendor rather than approximating it from a screen-color value.

This category is called "Images Editing Tools" — why don't either of these tools edit an actual image?

That's a fair thing to notice, and worth answering honestly rather than glossing over: right now, this category holds two color-format tools, not image-manipulation tools. Neither one crops, resizes, compresses, or filters an image file. What they do instead is help you pick, adjust, and convert an exact color value between the formats CSS, design software, and codebases actually use — a narrower, adjacent job to image editing, not the same thing.

Which tool should I start with if I don't know my starting color yet?

The Color Picker. It's built for exploring a color from scratch, whether that means dragging inside its visual picking area or typing a rough guess into one of its numeric fields and adjusting from there. The RGB to Hex Converter is the faster tool once you already have specific RGB numbers in hand from somewhere else, not a starting point for finding a color you don't have yet.