The background-origin property sets the background positioning area. That is the box used when background-position and background-size place a background-image. Choose the border edge, the padding edge, or the content edge.
The initial value is padding-box. The property is not inherited. It applies to every element, including ::first-letter and ::first-line. With several images, list one keyword per layer. Origin is ignored when background-attachment is fixed.
Standard-track.
Not deprecated and not experimental. Baseline widely available. Do not confuse it with background-clip, which only limits how far the paint shows.
Skip the padding in the measure.content-box starts left top at the content edge.
The circle moves inward. The 24px padding pushes the image away from the dashed border.
Useful for tight alignment. Pair this with content-sized art when the image should line up with the text, not the padding.
Compare the three. Border → padding → content is the order from outside in. That is the same order the keywords name.
Edge Cases & Pitfalls
If every keyword looks the same, one of these is usually why.
fixed
Ignored when attachment is fixed
With background-attachment: fixed, the image is pinned to the viewport. Origin no longer chooses a box on the element.
clip
Origin is not clip
background-clip limits painting. Origin only changes the positioning area. You can set them to different boxes on purpose.
cover
A full-bleed image hides the change
With background-size: cover and repeat, every origin can look identical. Use a smaller, non-repeating image at a known corner to study the property.
shorthand
One box in the shorthand sets both
In the background shorthand, a single border-box / padding-box / content-box value sets both origin and clip. Two values mean origin first, then clip.
box
No border and no padding, no visible shift
If padding and border are zero, the three boxes share the same edges. Add padding or a thick border before comparing keywords.
Compatibility
Browser Support
background-origin is a browser painting property. Node.js, Deno, and Bun do not apply it. All three keywords are Baseline and widely available.
✓ Baseline · Widely available since 2015
background-origin
Chrome 4+, Firefox 4+, Safari 3.1+, Edge 12+, Opera 15+, Samsung Internet 4+, Internet Explorer 9+. Older Internet Explorer 8 and below lack the property.
97%Global support
Google Chrome4+
Full support
Mozilla Firefox4+
Full support
Apple Safari3.1+
Full support
Microsoft Edge12+
Full support
Opera15+
Full support
Samsung Internet4+
Full support
Internet Explorer9+
Full support
background-originWidely supported
Bottom line: Safe to use in current browsers. Internet Explorer 8 and older do not support it. Remember that fixed attachment still disables origin on every engine.
Remember
Key Takeaways
Role: choose the box used for background-position and background-size.
Not clip: origin positions; background-clip paints or hides.
Fixed: with background-attachment: fixed, origin is ignored.
One line:background-origin answers “which edge is left top measured from?”
Frequently Asked Questions
It sets the background positioning area. background-position and background-size are measured from that box: the border box, the padding box, or the content box.
padding-box. The positioning area starts just inside the border, at the outer edge of the padding.
background-origin decides where position and size are calculated from. background-clip decides how far the background paint is allowed to show. They often use the same keywords, but they do different jobs.
You need a visible border or padding, a non-repeating image that is smaller than the box, and a clear background-position such as left top. With a full-bleed cover image, every origin can look the same. Origin is also ignored when background-attachment is fixed.
Yes. Gradients are background images. Origin changes the box used for their position and size when those properties depend on the element's edges.
It is Baseline and widely available. Unprefixed support is solid in Chrome 4+, Firefox 4+, Safari 3.1+, Edge 12+, and Internet Explorer 9+. It is a browser painting property. Node.js, Deno, and Bun do not apply it.