To add a background image in Webflow, select any element, go to Style Panel (S) → Backgrounds → '+' → Image, then choose your uploaded asset. Set Size to Cover to fill the container, and Position to control which part of the image is centered. For parallax, change Attachment to Fixed — note that Fixed attachment does not work on iOS Safari, so always add a fallback static image layer or test on actual devices.
Webflow Background Images: Cover, Parallax, and CMS-Connected Backgrounds
Background images in Webflow are set through the Style Panel and applied to any element — sections, divs, hero containers, or individual cards. Unlike inline images, background images are purely decorative CSS and do not generate responsive srcset variants automatically, so file size management matters more. This tutorial covers the complete background image workflow: uploading and applying images, Cover vs. Contain sizing, Fixed-attachment parallax effects, stacking multiple background layers for overlay effects, and connecting backgrounds to CMS fields for dynamic per-page backgrounds. The parallax and CMS-connected techniques make this tutorial distinct from basic image cropping or video backgrounds.
Prerequisites
- A Webflow project open in the Designer
- Background images uploaded to the Asset Manager (cloud icon, left toolbar) — recommended max 1MB per background image
- Familiarity with the Style Panel sections (S shortcut) and Breakpoint Bar at the top of Designer
Step-by-step guide
Upload your background image to the Asset Manager
Upload your background image to the Asset Manager
Click the cloud icon in the left toolbar to open the Asset Manager. Click the upload cloud icon or drag and drop your image file. Webflow accepts JPG, PNG, WebP, and AVIF (supported since July 2024). The maximum file size per upload is 4MB, but for background images you should aim for under 500KB. If your image is larger, select it after upload, click Compress, and choose WebP (good compression) or AVIF (best compression, ~30-50% smaller than WebP). Background images do not automatically generate responsive srcset variants like inline images do, so a single optimized file is critical.
Expected result: Your background image appears in the Asset Manager panel, ready to assign to any element.
Assign the background image to your element
Assign the background image to your element
Select the element you want to give a background — usually a Section, Div Block, or Container. Open the Style Panel (S) and scroll to the Backgrounds section. Click the '+' icon to add a background layer. Choose 'Image' from the background type options. A file picker appears — click the folder icon or search your assets by name and select your uploaded image. The image immediately appears as a background on the element.
Expected result: The background image fills the element area. By default it tiles if the element is larger than the image.
Set Size to Cover and control Position
Set Size to Cover and control Position
With the element selected and the background layer active in Style Panel → Backgrounds, find the Size dropdown. Change it from 'Auto' (default, which can cause tiling) to Cover. Cover scales the image to fill the entire element without distortion, cropping the overflow edges. Alternatively, set to Contain to show the full image without cropping — useful for logos or charts used as backgrounds. Below Size, set Position using the grid of 9 position presets (top-left, top-center, top-right, middle-left, center, etc.) or enter custom X/Y percentage values. Center (50% 50%) is the most common starting point.
Expected result: The background image fills the section completely at Cover size with no tiling. The image repositions to show the key focal area based on your Position setting.
Stack a gradient overlay for text legibility
Stack a gradient overlay for text legibility
Text on top of background images is often hard to read. Webflow supports multiple stacked background layers. With the element selected, click '+' in the Backgrounds section again to add a second layer. Choose 'Gradient' and select 'Linear'. Set the gradient from a semi-transparent dark color at the bottom (rgba(0,0,0,0.7)) to transparent at the top. Background layers stack in the order they appear — the top layer in the list renders on top visually. Drag the gradient layer above the image layer so the gradient sits over the image. The result is a dark fade at the bottom of your hero section that makes white text readable.
Expected result: The section shows the background image with a gradient overlay. Text elements placed over the section are now legible against the dark gradient base.
Enable parallax scrolling with Fixed attachment
Enable parallax scrolling with Fixed attachment
Parallax in Webflow is achieved by setting the background image attachment to Fixed. This makes the background image stay in place while the page scrolls, creating a depth illusion as the container moves over the static background. With the element selected, find the background image layer in Style Panel → Backgrounds. Look for the Tile/Attachment setting — it has options: No-repeat, Repeat, Repeat-x, Repeat-y. Click the attachment icon (scroll icon) to toggle between Scroll (default) and Fixed. Set it to Fixed. Make the section tall enough (min-height: 60-80vh) to see the parallax effect as the user scrolls.
Expected result: As you scroll the published site (preview via top-right Play button), the background image stays fixed while the section container scrolls over it.
Connect a background image to a CMS field
Connect a background image to a CMS field
To use different background images per CMS item (e.g., a blog post background, a portfolio project hero), use a CMS-connected background. First, ensure your Collection has an Image field (CMS Panel → your collection → Edit Fields → add Image field). Inside a Collection List item or Collection Template page, select the element that needs a background. Go to Style Panel → Backgrounds → '+' → Image. In the image source field, you will see a purple icon (the CMS binding icon). Click it and select your Image CMS field from the dropdown. Now each collection item renders its own background image dynamically.
Expected result: Each collection item in the list renders a different background image drawn from its CMS Image field.
Set a fallback background color and test across breakpoints
Set a fallback background color and test across breakpoints
If a CMS image field is empty, or if the background image fails to load, you need a fallback. In Style Panel → Backgrounds, add an additional background layer ('+' → Color) and place it below the image layer in the stack. Set a brand color or neutral dark color. This color shows through if the image fails. Next, switch through breakpoints in the Breakpoint Bar and check that the background image looks correct on Tablet and Mobile. You may need to adjust the Position value per breakpoint if the focal area of the image shifts.
Expected result: The element has a solid color fallback visible if the image layer is removed or fails. The background positions correctly at all breakpoints.
Complete working example
1WEBFLOW BACKGROUND IMAGES — VISUAL STEPS SUMMARY231. UPLOAD IMAGE4 Asset Manager (cloud icon) → Upload → Compress to WebP/AVIF5 Target: under 500KB for background images672. ASSIGN BACKGROUND8 Select element (Section / Div Block) → Style Panel (S) → Backgrounds → '+' → Image9 Select your asset from the picker10113. SIZE AND POSITION12 Style Panel → Backgrounds → Size: Cover13 Position: 9-point grid or custom X/Y % values (e.g., center center = 50% 50%)14154. GRADIENT OVERLAY16 Backgrounds → '+' → Gradient → Linear17 Drag gradient layer ABOVE image layer in the list18 Set: bottom color rgba(0,0,0,0.7) → top color transparent19205. PARALLAX (Fixed attachment)21 Style Panel → Backgrounds → attachment icon → Fixed22 ⚠️ Does NOT work on iOS Safari23 Alternative: Interactions 2.0 While Scrolling In View + Move Y on element24256. CMS-CONNECTED BACKGROUND26 Must be inside Collection List or Template Page27 Style Panel → Backgrounds → '+' → Image → purple icon → select CMS field28297. FALLBACK + BREAKPOINTS30 Backgrounds → '+' → Color → set brand/neutral color, place BELOW image layer31 Check Position at Tablet and Mobile breakpointsCommon mistakes
Why it's a problem: Background image tiles or shows small instead of filling the section
How to avoid: The Size setting defaults to 'Auto', which renders the image at its natural size and tiles it. Go to Style Panel → Backgrounds → the image layer → Size → Cover. This scales the image to fill the container completely.
Why it's a problem: Fixed attachment parallax works on desktop but is broken on iPhone
How to avoid: This is a known iOS Safari limitation — fixed background attachment is not supported on mobile iOS and renders statically. Use Webflow Interactions 2.0 instead: Interactions panel (H) → Element triggers → While Scrolling In View → Move Y action as a cross-browser parallax replacement.
Why it's a problem: Text on the background image is unreadable (low contrast)
How to avoid: Add a gradient overlay layer in Style Panel → Backgrounds → '+' → Gradient. Place it above the image layer. Set the bottom stop to rgba(0,0,0,0.65) and the top to transparent. Alternatively, add a solid semi-transparent color layer (rgba(0,0,0,0.4)) at the top of the stack.
Why it's a problem: The purple CMS binding icon does not appear for background images
How to avoid: CMS binding is only available inside Collection List items or Collection Template pages. If you are on a regular static page, the purple icon will not appear. Drag a Collection List element onto the page first, or navigate to your collection's template page via Pages panel (P) → CMS Collection Pages.
Best practices
- Always compress background images to WebP or AVIF in the Asset Manager before assigning them — background images do not get Webflow's automatic responsive srcset treatment.
- Set a fallback background color below the image layer in Style Panel → Backgrounds so elements still look intentional if the image fails to load.
- Never rely solely on Fixed attachment for parallax — test on iOS Safari where it renders as static. Use Webflow Interactions as a cross-platform alternative.
- For CMS-connected backgrounds, add a conditional visibility check: if the Image field is empty, the background image layer should fall back to the color layer gracefully.
- Use Style Panel → Size → Min Height: 100vh for full-screen background image sections rather than a fixed pixel height — this adapts to all viewport sizes.
- Keep the gradient overlay layer above the image layer in the Backgrounds stack, not below — the layer order in Webflow's panel maps directly to CSS z-order within the background property.
- For retina/HiDPI screens, upload background images at 2x your display size (e.g., 2560px wide for a full-width desktop background).
Still stuck?
Copy one of these prompts to get a personalized, step-by-step explanation.
I'm building a Webflow hero section with a full-width background image that should scroll with a parallax effect. I also want a gradient overlay so text stays readable. Can you give me the exact Webflow Style Panel steps to: 1) assign a background image with Cover sizing, 2) add a dark gradient overlay on top of it, and 3) enable Fixed attachment parallax. Also explain the iOS Safari issue with fixed attachment and what to do instead.
In my Webflow project, I have a blog collection with an Image field called 'Hero Background'. I want each blog post template page to display that image as a full-width background on the hero section. Walk me through connecting the CMS Image field to the section's background using Webflow's Style Panel binding, and explain where the purple binding icon appears and when it doesn't.
Frequently asked questions
How do I change a background image on a specific breakpoint in Webflow?
Switch to the target breakpoint using the Breakpoint Bar at the top of the Designer. Select the element and go to Style Panel → Backgrounds. Remove the existing image layer and add a new one with a different, smaller image optimized for that screen size. Webflow's breakpoint cascade means the new image applies at that breakpoint and below. This is useful for swapping a large desktop hero image with a mobile-cropped version.
Do background images in Webflow get lazy-loaded automatically?
No. Lazy loading (the HTML loading='lazy' attribute) only applies to inline Image elements, not CSS background images. Background images set via Style Panel → Backgrounds always load as part of the CSS. To defer non-critical background images, you can add a custom attribute or use JavaScript to add the background image class after page load, but this requires the Basic plan for custom code.
Can I use a video file as a background image in Webflow?
Not through the Backgrounds panel. For video backgrounds, use the dedicated Background Video element: Add Elements (A) → Media → Background Video. This element is purpose-built with autoplay, mute, loop, and poster image settings. The Backgrounds panel only accepts image files (JPG, PNG, WebP, AVIF, GIF).
Why does my CMS background image show a broken state on some items?
If the CMS Image field is empty for some items, the background layer has nothing to display and shows transparent (or your fallback color). Add a conditional visibility check on the element: Element Settings (D) → Conditional visibility → Image field is set. You can also use a Switch field to toggle between a CMS background and a default brand background image for items without an image.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation