Squarespace

Squarespace Custom CSS: Everything You Can (and Cannot) Do

Last updated: August 2026 · By Abdullah Sajjad, Senior Web Application Engineer

13 min readPublished

Squarespace custom CSS lets you restyle almost anything visual on a Squarespace site: fonts, colors, spacing, buttons, headers, and individual sections, using the built-in CSS editor available on every current billing plan. What custom CSS cannot do is add functionality: JavaScript, third-party embeds, and site-wide scripts require code injection, which Squarespace reserves for the Core, Plus, and Advanced plans.

This guide, written by Abdullah Sajjad, a Top 3% Toptal engineer with 250+ delivered projects, covers exactly where the CSS ceiling sits: what the editor can change, what needs code injection instead, the plan gating table, safe setup steps, and copy-paste examples. Every technique links to a free library of 14 tested snippets at abdullahsajjad.dev/squarespace-snippets.

When CSS alone cannot get you there, custom Squarespace development, widgets, integrations, and full platform builds, starts at $1,500 with a fixed quote after a free consultation.

On This Page

Squarespace's design settings cover a lot, but every site owner eventually hits a wall: the button style you want does not exist, a section needs different spacing on mobile, or the header should behave in a way no toggle offers. Custom CSS is the escape hatch. It is also widely misunderstood, and most advice online is scattered across forum threads and plugin-seller blogs.

This guide is the complete picture as of August 2026. It covers what the Squarespace CSS editor can and cannot change, which plans gate which custom code features, how to add CSS without breaking your site, working copy-paste examples for Squarespace 7.1, and the honest point where CSS stops and real development starts. Every technique connects to my free library of 14 tested Squarespace snippets you can copy directly.

I write this as a developer, not a plugin seller. Over 8+ years and 250+ projects I have shipped custom Squarespace work ranging from CSS polish to full API-driven builds, including a custom music widget for StudioVerso and a 365-property rental platform for McCann Realtors.

What can custom CSS actually change on Squarespace?

Custom CSS on Squarespace can restyle nearly every visual property of every element the platform renders: typography, colors, spacing, borders, shadows, hover states, animations, and responsive behavior. The editor loads your rules after Squarespace's own stylesheets, so your declarations win most specificity battles without hacks.

  • Typography beyond the style panel: per-section font sizes, letter spacing, fluid clamp() scaling, and custom underline styles
  • Buttons: corner radius, gradients, hover lifts, and outline variants, like the button hover effects snippet
  • Headers and navigation: overlay styles such as the transparent header snippet that lets a hero image sit behind your menu
  • Section-level control: target one section by its data-section-id attribute and leave the rest of the site untouched
  • Images and galleries: rounded corners, filters, and effects like the image hover zoom snippet
  • Pure-CSS animation: keyframe effects, gradient text headings, and themed browser scrollbars via the custom scrollbar snippet
  • Responsive fixes: hide, resize, or restack elements at any breakpoint with media queries

One less-known capability: the editor accepts LESS syntax, so nesting and variables compile fine. That is convenient for organizing a larger stylesheet, though plain CSS is easier to debug when something misbehaves.

What can custom CSS not do on Squarespace?

CSS is a styling language, so anything involving behavior, data, or new markup is out of scope. Custom CSS cannot add JavaScript interactivity, fetch data from an API, create new content elements, edit Squarespace's HTML templates, or run tracking scripts. It also cannot touch the checkout flow: Squarespace locks checkout pages so custom code never applies there.

Squarespace covers those gaps with three separate tools, each with its own plan requirements and risk profile:

ToolWhat it doesWhere it livesPlan requirement
Custom CSS editorVisual styling only: fonts, colors, spacing, effectsWebsite Tools, Custom CSSAll current plans
Code blocksHTML, scripts, or embeds inside one page sectionAny page, add a Code blockPlain HTML on all plans; scripts and iframes need Core and up
Code injectionSite-wide scripts in the header or footer, plus per-page header codeWebsite Tools, Code InjectionCore, Plus, or Advanced
Developer platformFull template source controlGit and local toolingSquarespace 7.0 sites only

Developer mode deserves a caveat: it exists only on Squarespace 7.0, it is not coming to 7.1, and it locks your template out of some automatic updates. For the vast majority of sites in 2026, which run 7.1, the practical customization toolkit is custom CSS plus code injection.

A concrete measure of the split: in my own snippet library, 6 of the 14 snippets are pure CSS and run on any plan, while the other 8 need a code block or code injection because they involve JavaScript or extra markup. Roughly half of the popular Squarespace customizations people ask for are, strictly speaking, not CSS jobs.

Which Squarespace plans allow custom CSS and code injection?

Every current Squarespace billing plan, Basic, Core, Plus, and Advanced, includes the Custom CSS editor, so plan choice never blocks pure styling work. Code injection is different: as of August 2026, Squarespace documents it as available on the Core, Plus, and Advanced plans plus some legacy Business and Commerce plans, which means the entry Basic plan cannot run site-wide JavaScript, tracking scripts, or third-party plugin embeds. In practice that draws a clean line: if a change is visual (fonts, colors, layout spacing, hover effects), the cheapest plan can ship it through custom CSS, and if a change is behavioral (popups, custom widgets, analytics pixels, script-driven animations), it needs at least the Core plan. Squarespace has renamed plans before, the current lineup rolled out to replace Personal and Business across 2024 and 2025, so always confirm gating on the official plan comparison page before upgrading.

PlanCustom CSS editorCode blocks with scriptsCode injection
BasicYesNoNo
CoreYesYesYes
PlusYesYesYes
AdvancedYesYesYes
Legacy PersonalYesNoNo
Legacy Business and CommerceYesYesYes

Plans change

Squarespace rolled out the Basic, Core, Plus, and Advanced lineup to replace Personal and Business across 2024 and 2025, and feature gating has shifted before. Before upgrading a plan just for code access, confirm the feature list on Squarespace's current pricing page and the official code injection help article.

How do you add custom CSS to Squarespace safely?

The editor itself is simple. The discipline around it is what keeps a site maintainable, especially once your stylesheet grows past a few dozen rules. This is the exact process I use on client sites:

  1. Open the CSS panel: from your site dashboard go to Website, then Website Tools, then Custom CSS. On older dashboards the same panel lives under Design.
  2. Copy everything already in the panel into a local file before touching anything. This is your rollback point: Squarespace keeps no version history for custom CSS.
  3. Work on one change at a time and save after each. The live preview updates as you type, so a rule that breaks the layout is obvious immediately.
  4. Comment every rule with what it does and which page or section it targets. Six months from now, an uncommented stylesheet is a liability.
  5. Find precise selectors with your browser's inspector: right-click the element, choose Inspect, and prefer stable hooks like data-section-id attributes and block classes such as .sqs-block-image over auto-generated ids like #block-yui_3_17, which change if a block is deleted and rebuilt.
  6. Check every breakpoint before you call a change done: Squarespace applies different styles on mobile, so test the built-in device preview plus a real phone.
  7. Keep the whole panel mirrored in a local file or a git repository. When an experiment goes wrong, and eventually one will, you restore in seconds.

Targeting one section

Every Squarespace 7.1 page section carries a unique data-section-id. A selector like section[data-section-id="YOUR_ID"] h2 scopes any rule to that single section, which is the cleanest way to restyle one part of a page without side effects.

Which copy-paste CSS snippets work on Squarespace 7.1?

The examples below are original, commented, and written for Squarespace 7.1. Paste each into the Custom CSS panel and adjust the values marked in the comments. For finished, more complete versions of the popular effects, each links to its page in the free snippet library.

Rounded buttons with a hover lift

This restyles every primary button site-wide: softer corners, a subtle shadow, and a lift on hover. Swap the radius and shadow values to match your brand. For gradient fills and outline variants, see the button hover effects snippet.

cssPrimary button restyle
/* Rounded primary buttons with a hover lift */
.sqs-button-element--primary {
  border-radius: 10px; /* corner roundness, try 4px to 14px */
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.sqs-button-element--primary:hover {
  transform: translateY(-2px); /* lift height on hover */
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18); /* soft drop shadow */
}

A different background for one section

Scope any style to a single section using its data-section-id. Find the id with your browser inspector (see the step list above), then replace the placeholder value.

cssSection-scoped background and heading color
/* Restyle one page section only */
/* Replace 1234abcd with the section's real data-section-id */
section[data-section-id="1234abcd"] {
  background-color: #f7f4ee; /* section background */
}

section[data-section-id="1234abcd"] h2 {
  color: #1a2b4a; /* heading color inside this section only */
}

Fluid heading sizes without media queries

The clamp() function scales type smoothly between a minimum and a maximum size, which fixes the common complaint that 7.1 headings look enormous on tablets.

cssFluid responsive headings
/* Fluid type: minimum size, preferred viewport-based size, maximum size */
h1 {
  font-size: clamp(2rem, 5vw, 3.4rem);
  line-height: 1.15;
}

h2 {
  font-size: clamp(1.5rem, 3.5vw, 2.4rem);
}

Hide any element on mobile only

Media queries remove clutter from small screens without deleting anything. This example hides the header's call-to-action button below 768px; the same pattern works for any selector.

cssHide an element below 768px
/* Hide the header CTA button on phones and small tablets */
@media (max-width: 767px) {
  .header-actions .btn {
    display: none;
  }
}

Rounded corners and soft shadows on images

A small radius on every image block modernizes most templates instantly. Pair it with the image hover zoom snippet for a gallery-grade effect.

cssRounded image blocks
/* Round corners and add depth to all image blocks */
.sqs-block-image img {
  border-radius: 12px; /* corner roundness */
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); /* soft depth */
}

This replaces the default underline in body text with a line that grows on hover, one of those details visitors notice without knowing why.

cssAnimated link underlines
/* Animated grow-on-hover underline for links in body paragraphs */
.sqs-block-html p a {
  text-decoration: none;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 0% 2px; /* 2px is the line thickness */
  background-position: 0 100%;
  background-repeat: no-repeat;
  transition: background-size 0.25s ease;
}

.sqs-block-html p a:hover {
  background-size: 100% 2px;
}

More finished effects, including a transparent header, a hide-on-scroll header, custom scrollbars, and gradient text headings, live in the free snippet library, each with installation notes and its exact plan requirement.

Want it done right the first time?

I take on custom Squarespace projects for clients like StudioVerso and McCann Realtors: bespoke styling, widgets, integrations, and full builds. Custom work starts at $1,500 with a fixed quote up front.

Squarespace development services

Why is your Squarespace CSS not working?

Almost every report of custom CSS doing nothing traces back to one of six causes. Work down this list in order and you will usually find the culprit in minutes:

  1. A syntax error above your rule. The editor compiles the whole panel as LESS, so one missing brace or stray character can silently kill every rule below it. Re-add rules half at a time to isolate the break.
  2. The selector no longer matches. Auto-generated block ids change when a block is deleted and recreated, and the markup differs between Squarespace 7.0 and 7.1. Re-inspect the element and prefer stable classes and data-section-id attributes.
  3. You lost a specificity battle. Squarespace sets some properties inline or with high-specificity rules. Chain classes to increase specificity before reaching for !important, and if you must use !important, comment why.
  4. The rule sits in the wrong breakpoint. A declaration inside a desktop media query will never fire on mobile. Check which query wraps your rule.
  5. Caching. The editor preview is live, but the public site can serve cached pages for a few minutes. Hard-refresh or test in a private window before assuming the CSS failed.
  6. A locked surface. The checkout flow and certain system pages ignore custom code entirely, by design. No selector will reach them.

If the CSS worked last month and broke without any edits, the likely cause is a Squarespace platform update that changed class names in the underlying markup. This is rare but real, and it is why serious sites keep custom CSS commented and mirrored locally: a documented stylesheet takes minutes to re-point at new selectors, an undocumented one takes hours.

Custom code is unsupported by design

Squarespace's own policy places custom CSS and code injection outside the scope of their customer support. That is not a reason to avoid custom code, but it is the reason to keep it small, commented, and reversible, or to have a developer who answers for it.

When is custom CSS not enough?

Custom CSS on Squarespace stops being the right tool the moment a change needs data or behavior instead of styling. A real example: StudioVerso, a creative studio, needed their Spotify tracks presented as part of the site design, and no amount of CSS can fetch tracks from an API, so the fix was a custom widget written in vanilla JavaScript. At the far end sits McCann Realtors, a vacation rental business whose 365 properties live in a legacy SOAP API: their Squarespace site is fed by a Node.js middleware layer on Vercel, something CSS and even code injection alone could never do. Across 250+ projects at abdullahsajjad.dev, the pattern holds: CSS handles presentation, code injection handles behavior, and external services handle data. Hiring a developer makes sense exactly when your requirement crosses one of those two boundaries.

On cost: my custom Squarespace projects start at $1,500 for a template-based business site and range to $6,000+ for fully custom builds with e-commerce, integrations, or heavy custom code, each with a fixed quote up front after a free consultation. If the fix you need is genuinely one snippet, take it from the free library instead: that is what it is there for.

If you recognize your project in the custom category, the Squarespace development service page explains scope, pricing tiers, and timelines, and the StudioVerso case study shows what a custom widget build looks like end to end.

FAQ

Frequently Asked Questions

Do I need a specific Squarespace plan to use custom CSS?
No. The Custom CSS editor is included on every current Squarespace plan, including Basic. Code injection is the gated feature: as of August 2026 it requires the Core, Plus, or Advanced plan, or a legacy Business or Commerce plan. Verify against Squarespace's current pricing page, since the plan lineup was renamed during the 2024 to 2025 pricing refresh and gating can change.
What is the difference between custom CSS and code injection on Squarespace?
Custom CSS restyles elements that already exist: fonts, colors, spacing, and effects. Code injection inserts HTML and JavaScript into the header or footer of every page, which is how you add behavior: analytics scripts, custom widgets, popups, and third-party embeds. CSS is available on all plans; code injection needs Core or higher.
How much does custom Squarespace CSS or development work cost?
Copy-paste snippets are free, including the 14 in my library at abdullahsajjad.dev/squarespace-snippets. Hiring a developer for custom Squarespace work typically starts around $1,500 for a template-based business site and runs to $6,000+ for fully custom builds with e-commerce or API integrations. I quote every project as a fixed price after a free consultation.
Does custom CSS slow down a Squarespace site?
Not meaningfully at typical sizes. Custom CSS is delivered alongside your site's other styles, and a few hundred lines add single-digit kilobytes. What does hurt performance is JavaScript added through code injection, especially render-blocking third-party scripts, so audit those before blaming CSS.
Will my custom CSS break when Squarespace updates?
Occasionally, yes. Squarespace can change internal class names during platform updates, and custom code is explicitly outside the scope of their support. Reduce the risk by targeting stable hooks like `data-section-id` attributes and documented block classes, commenting every rule, and keeping a mirrored copy of your stylesheet so re-pointing selectors takes minutes.
Can I use custom CSS on both Squarespace 7.0 and 7.1?
Yes, the Custom CSS panel exists on both versions, but selectors rarely transfer because the underlying markup differs. Squarespace 7.1 has no developer mode, so CSS plus code injection is the entire customization surface there. On 7.0, note that custom CSS does not carry over when you switch templates.
How do I find the section or block ID my CSS should target?
Right-click the element in your browser and choose Inspect. Page sections in Squarespace 7.1 carry a `data-section-id` attribute on the `section` element, and blocks carry classes like `.sqs-block-image`. Prefer those stable hooks over auto-generated ids such as `#block-yui_3_17`, which change if a block is deleted and rebuilt.

Need more than CSS can deliver?

I build custom Squarespace sites, widgets, and integrations for clients like StudioVerso and McCann Realtors. Projects start at $1,500 with a fixed quote after a free consultation.

Start a Conversation

Let's Discuss Your Project

I take on a limited number of projects to ensure each client gets my full attention. If you need a senior engineer for scalable platforms, API integrations, or AI-powered solutions, let's talk.

Email

abdullah@abdullahsajjad.dev

Location

Lahore, Pakistan