b2KIT

CSS Autoprefixer

Add vendor prefixes to CSS properties for cross-browser compatibility with configurable browser targets.

Tested tool guide Tested browser tools Checked August 16, 2026

What CSS Autoprefixer does, with a checked example

Paste CSS, pick a browser target, and get back the same stylesheet with only the vendor prefixes your target requires. Every property and selector is checked against browser-support data - the same Can I Use database the build-time Autoprefixer uses - restricted to the browsers you chose, and the needed -webkit-, -moz- or -ms- forms are inserted. Two things surprise people: with modern targets like 'last 2 versions' the output is often identical to the input, because current browsers need almost no prefixes, and the tool also removes prefixes no targeted browser requires, so hand-prefixed CSS can come back smaller. Everything runs in the browser; your CSS is never uploaded.

Worked example

A concrete input and expected output from the current implementation.

Input

a {
  position: sticky;
  user-select: none;
}

Expected output

a {
  position: -webkit-sticky;
  position: sticky;
  -webkit-user-select: none;
  user-select: none;
}

With the browser target set to Safari 12, which supports both properties only with the -webkit- prefix, the tool emits the prefixed declarations ahead of the standard ones, which stay last and win wherever unprefixed support exists. Repoint the target at current Safari and the same input returns unchanged.

How the result is produced

1

Browser targets select the prefixes

You choose a browser set from presets like 'last 2 versions' or '> 1%', or type an explicit list such as 'Safari 12, Firefox 78'. Each property and selector is matched against the support table for exactly those browsers, and a prefix is emitted only when at least one targeted browser still requires it. Declarations the whole target supports unprefixed pass through untouched.

2

Prefix removal is half the job

The tool does not just add prefixes. Hand-written prefix stacks in your input are rewritten against the target: prefixes no targeted browser needs are deleted, ones still required are kept, and the unprefixed declaration is always placed last so it wins in browsers that support it. This is why already-prefixed CSS often comes back visibly smaller, and why the tool belongs at the end of a build pipeline.

Good uses

  • Supporting locked-down old browsers: a school district, hospital or kiosk fleet stuck on Safari 12-era iOS still needs -webkit- forms for sticky, user-select, backdrop-filter and similar, and this tool adds exactly those without guessing.
  • Cleaning inherited CSS: hand-written -moz- and -webkit- duplicates from older code get stripped to what your actual audience needs, shrinking the file and removing declarations that do nothing but lose cascade battles.
  • Deciding whether to install a prefixer at all: paste representative CSS with your real target set first. If nothing changes - common with 'last 2 versions' - you have evidence that a prefixing build step would be wasted work.

Limits and checks

  • The output is meaningless without the target. The same CSS returns different results for 'last 2 versions', '> 0.5%' and 'Safari 12'. Treat the result as 'what these exact browsers need', never as a general statement about what the web needs.
  • Prefixes can disappear. If you paste CSS you already hand-prefixed, expecting additions, lines will be deleted instead - correct for the chosen target, but a surprise if your real visitors include an old browser you forgot to list. The target set must match your actual support matrix, not your ideal one.
  • It cannot fix broken browsers. A browser whose support is partial but buggy - IE 10 flexbox is the classic case - either gets a prefix that does not repair the bug or passes through untouched. Prefixes solve missing support, not incorrect implementation.

Common questions

Why did my CSS come back unchanged?

Because with a modern target set - 'last 2 versions', or percentage thresholds that exclude old browsers - nearly nothing needs a prefix anymore. Current Safari, Chrome and Firefox accept unprefixed flexbox, transforms, gradients and most other once-prefixed features. An identical result is the tool working correctly, not a failure. Switch the target to an older browser set and prefixes will appear.

Do I still need prefixes at all?

Only if some of your visitors use a browser that still requires them. In practice that means older Safari and iOS Safari for a short list of properties such as user-select, backdrop-filter and mask-image. If your analytics show only recent browsers, skipping prefixing entirely is defensible. If you must support old locked-down devices, they must be in the target list or they receive nothing.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools