Blocks

Best CTA blocks 2026: 27 verified sections

27 CTA blocks from 7 registries, each with a free preview and Pro source code. The table ranks them by real file count and names every publisher.

Key points

  • 27 cta sections from 7 registries, counted on 1 November 2026: only one carries a video background.
  • Contrast measured at the worst point of the gradient, visible focus on every background, one primary invitation per screen.
  • Video costs bytes before the text: without a poster and deferred loading it hurts perceived speed.

A call-to-action block is a section asking for a click, and its problem is not the wording. The catalogue counts 27 from 7 registries, measured on 1 November 2026 on /api/blocks/category/cta; one carries a video background and three files, and that is the one to inspect closely.

Where the click gets lost

The first failure is contrast. A white button on a pale gradient passes the eye and fails the contrast check, and the same holds for text over an image with no scrim. The second is hierarchy: two buttons of equal visual weight in one section split the click and neither wins. The third is the focus state: a dark focus ring on a dark background disappears, and keyboard users cannot see where they are.

The fourth failure is weight. The video-background section loads a media file before the text unless it has a poster and deferred loading, and on a slow connection the main content arrives after the decoration. The fifth is motion: autoplaying video that ignores the reduced-motion preference is an accessibility problem, not an aesthetic detail.

BlockRegistryFilesCategory
CTA 02 - Video Background CTAShadcn Space3cta
CTA 01 - Gradient Call-to-Action BannerShadcn Space2cta
Newsletter 01 - Newsletter Subscription CTAShadcn Space2newsletter
CTA 01Shadcn UI Blocks1cta
CTA 02Shadcn UI Blocks1cta
CTA 03Shadcn UI Blocks1cta
CTA 04Shadcn UI Blocks1cta
CTA 05Shadcn UI Blocks1cta

The checks that actually matter

  • The measured contrast of text on the background, gradient included, not just of the button.
  • One primary invitation per section, with the secondary clearly lighter.
  • A visible focus state on every background, including dark and photographic ones.
  • Whether the video has a poster, deferred loading and respect for prefers-reduced-motion.
  • The publisher licence, which here varies mostly on the visual assets included.

One detail separates the good blocks: the button label is a verb with an object, not a single word. A block showing a wide button with one word teaches the rest of the site to do the same, and the section becomes hard to fill when the promotion changes. Choose the block that survives a four-word label without breaking over two lines.

The limitation no block solves

None of these 27 sections knows what happens after the click. There is no event measurement, no variant to compare, no handling of the case where the visitor already subscribes. The second limitation is the publisher licence on visual assets: images and video bundled with the block do not become yours just because the code sits in your repository.

The rule that keeps the click

One primary invitation per screen, repeated at most twice on a page. If the block has a video background, use it only when the file stays under a megabyte, has a static poster and stops under the reduced-motion preference; otherwise take the gradient, which costs no bytes. And measure the click before choosing the variant: without a recorded event, comparing two sections is just an opinion.

The alternative is a bar fixed to the bottom of the screen. It costs a few lines, stays visible after scrolling and needs no dedicated section, but it takes room on mobile and the user must dismiss it. The block pays off when the invitation needs context, meaning the click depends on a sentence that justifies it; the bar pays off when the invitation is obvious and only needs to be reachable.

And there is the case where the user has already done what you ask. A static block keeps offering the newsletter to a subscriber, and that repetition burns trust. The fix is not hiding the section after a delay but passing a fact: when the session says the user already has a plan, the copy changes and the invitation becomes another action. That needs a variant of the block, and it needs deciding before you choose which one to copy.

curl "https://ui.eneawork.it/api/blocks/category/cta?limit=10"

The sections are in /blocks/category/cta, buttons in /components/cat/button and icons in /icons. For focus states read focus visible with Tailwind, for motion animations without JavaScript; the comparison between the hero and cta block families is in shadcn hero blocks.

Frequently asked questions

Is a video background always better?

Only with a light file, a static poster and respect for the reduced-motion preference; otherwise a gradient communicates the same for zero bytes.

How many invitations belong in one section?

One primary and one secondary of lower visual weight. Two equivalent buttons split the click and slow the decision.

How do I check contrast over a gradient?

Measure the worst point, not the average: contrast must be computed against the lightest or darkest colour under the text, not the middle of the gradient.

Does the block include images I can use in my product?

Not automatically: the code carries one licence, visual assets may carry another. Check the record before publishing.

A section or a fixed bar?

The section when the reason to click needs explaining, the bar when the invitation is obvious and only has to stay within thumb reach.