Master Addons
  • Widgets
    • Changelogs
      Source Code NEW PRO
      Caldera Forms
      Logo Slider
      Table of Contents
      Gravity Forms
      Transforms PRO
      Restrict Content PRO
      Pricing Table
      Ninja Form
      Mailchimp
      Tooltip
      Popup Trigger NEW PRO
      Which Element NEW
      Creative Button
      Creative Links NEW
      Domain Search HOT PRO
      Dual Heading HOT
      Flipbox
      Animated Gradient BG HOT PRO
      Image Hotspot PRO
      Infobox
      News Ticker PRO
      Particles
      Progress Bar
      Off-Canvas Content NEW PRO
      Reading Progress Bar HOT
      Custom JS
      Blockquote
      Counter Up
      Image Hover Effects
      Reveal NEW PRO
      Rellax PRO
      Positioning
      Image Comparison
      Tabs
      Toggle Content HOT PRO
      Post/Page Duplicator FREE
      Floating Effects PRO
      Mega Menu HOT
      Custom CSS HOT
      Gradient Headline
      Advanced Image
      Nav Menu
      Tooltips
      Comparison Table PRO
      Glassmorphism
      Featured Product PRO
      Image Carouse
      Gallery Slider NEW PRO
      Dynamic Tags NEW
      Countdown Timer
      Current Time
      Patterns
      Wrapper Link
      Timeline
      Team Member
      Contact Form 7
      Advanced Accordion
      Animated Headlines
      Blog
      Business Hours
      Call To Action
      Progress Bars
      Background Slider
      Team Slider
      Dynamic Table
      Grid Line PRO
      WP Forms
      Search
      We Form
      Entrance Animation NEW PRO
      Display Conditions PRO
      Filterable Image Gallery
      WP Forms
      Custom Breakpoints NEW
  • Features
    • Theme Builder

      Design site-wide templates for a consistent look across every page of your website.

      Popup Builder

      Create engaging popups, modals, and announcement bars - to capture leads.

      Widget Builder

      Expand Elementor with advanced custom widgets to build more dynamic layouts.

      Mega Menu Builder

      Create multi-column menus with icons and images for superior navigation.

      Custom Css

      Apply your own CSS for pixel-perfect styling beyond default design options.

      Dynamic Tags

      Insert dynamic content like post titles and custom fields directly into designs.

      Display Conditions

      Control element visibility based on user role, device, time, and other rules.

      Icons Library

      Choose from thousands of built-in icons to enhance visuals and consistency.

      Animation

      Add scroll, hover, entrance, and much more animations to bring designs to life.
  • Template Kits
    • Template Kits

      Professionally designed full-page template Kit. Import and customize in seconds.

      Ready Sections

      Pre-built content sections and rows. Drag, drop, and customize instantly.

      Ready Popups

      Different types of High-converting popup designs. Import and launch quickly.

      Ready Pages

      Complete page layouts for any purpose. Start editing immediately.

      Ready Header

      Multiple modern header designs. Import and adapt to your brand.

      Ready Footer

      Fully designed footers for different websites. Add functionality and style in clicks.
  • Brands
    • WP Adminify

      WP Adminify

      Take control of your WordPress dashboard. Customize the admin experience.
      Admin Bar Editor

      Admin Bar Editor

      Customize the WordPress admin bar for a cleaner, more personalized workspace.
      Loginfy

      Loginfy

      Customize your WordPress login page with branding, styles, and security enhancements.

      Rolemaster Suite

      Manage user roles and permissions with precision for better security and workflow.
      Master Blocks

      Master Blocks

      Expand the Gutenberg editor with advanced custom blocks for more creative layouts.
      WP Spotlight

      WP Spotlight

      Instantly search and access admin features, posts, and settings from anywhere.
  • Themes
  • Help
    • Get Support
    • Documentation
    • Facebook Community
    • Changelogs
  • Blog
Pricing
🇺🇸EN
  • 🇺🇸EN
  • 🇸🇦AR
  • 🇧🇩BN
  • 🇩🇰DA
  • 🇩🇪DE
  • 🇪🇸ES
  • 🇫🇷FR
  • 🇮🇳HI
  • 🇰🇷KO
  • 🇵🇹PT
  • 🇷🇺RU
  • 🇨🇳ZH

Getting Started

  • Can’t see the Master Addon Element inside Elementor Page editor?
  • How To Apply For an Affiliate Account?
  • Active Pro version
  • Installing Plugin

Addons

  • Popup Trigger
  • Off-Canvas Content
  • Logo Slider
  • Progress Bars
  • Image Carousel
  • Featured Product
  • Comparison Table
  • Source Code
  • Advanced Image
  • Gradient Headline
  • Gallery Slider
  • Toggle Content
  • Infobox
  • Timeline
  • Dynamic Table
  • Mailchimp
  • Blockquote
  • Changelogs
  • Countdown Timer
  • Current Time
  • Search
  • Filterable Image Gallery
  • Team Slider
  • Counter Up
  • Restrict Content
  • Table of Contents
  • Image Hotspot
  • Image Comparison
  • News Ticker
  • Image Hover Effects
  • Tabs
  • Pricing Table
  • Navigation Menu
  • Domain Search
  • Flipbox
  • Tooltip
  • Creative Links
  • Business Hours
  • Contact Form 7
  • Creative Button
  • Animated Headlines
  • Advanced Accordion
  • Call to Action
  • Progress Bar
  • Blog
  • Team Member
  • Dual Heading

Extensions

  • Mega Menu
  • Which Element
  • Post Duplicator
  • Grid Line
  • Glassmorphism
  • Tooltip
  • Wrapper Link
  • Floating Effects
  • Dynamic Tags
  • Display Conditions
  • Entrance Animation
  • Custom Breakpoints
  • Animated Gradient Background
  • Reveal
  • Particles
  • Background Slider
  • Transforms
  • Rellax
  • Positioning
  • Custom CSS

Widget Builder

  • Conditions
  • Twig Syntax
  • Settings Panel Introduction
  • Divider
  • Text Shadow
  • Select2
  • Border
  • Heading
  • Tabs
  • Repeater
  • Visual Choice
  • Background
  • Dimensions
  • Box Shadow
  • Slider
  • Icons
  • Gallery
  • Media
  • Popover Toggle
  • URL Field
  • Date Time
  • Typography
  • Font
  • Color Field
  • Choose
  • Select
  • Switcher
  • Hidden
  • Code
  • WYSIWYG
  • Textarea Field
  • Number
  • Text Field

Theme Builder

  • Comment Form
  • 404
  • Search
  • Archive
  • Single
  • Footer
  • Header

Popup Builder

  • How to Open a Popup After Inactivity in Elementor
  • How to Show an Exit Intent Popup in Elementor
  • How to Open a Popup on Scroll to a Specific Element in Elementor
  • How to Open a Popup on Scroll in Elementor
  • How to Open a Popup on Click in Elementor
  • How to open a popup on page load?
  • Popup Settings & Options

Template Kit

  • How to Import Template Kits in Master Addons
  • How to Disable Elementor Default Fonts and Colors
  • Import Elementor Template Kits
View Categories
  • Home
  • Docs
  • Widget Builder
  • Repeater

Repeater

Roy Jemee
Updated on August 6, 2026

9 min read

The Repeater field turns one set of controls into as many rows as the user needs. You define the fields once (a name, a price, a description) and anyone editing the widget in Elementor can add, duplicate, reorder, and remove items from the panel, exactly like the repeaters in Elementor’s own Icon List or Testimonial Carousel widgets. Inside the Master Addons Widget Builder, the Repeater is how you build card grids, menus, feature lists, team sections, and anything else where the item count is up to the site owner, not the widget author.

The Repeater pairs with both companion systems: Conditions shows or hides the control in the panel, and the Twig-syntax template engine renders its rows on the front end with {% for item in my_repeater %} loops and dotted tokens like {{ item.title }}. Both guides cover setup and limitations.

The Repeater works together with the template loop in your HTML: a {% for %} block prints your markup once per row. Three items render three cards; add a fourth in the panel and a fourth card appears, no code changes.

Custom Elementor widget rendering a grid of dish cards from Repeater field rows, with a new card added from the panel wrapping to a second row

What the Repeater field does #

A Repeater field renders Elementor’s standard repeater control in your widget’s option panel. When someone selects the widget, they see a stack of collapsible rows with four familiar actions:

  • Add Item: a button below the rows creates a new item with your default values.
  • Duplicate: the copy icon clones a row, settings and all.
  • Reorder: rows drag and drop into a new order, and the page updates to match.
  • Remove: the delete icon takes a row out.

Each row expands to show the sub-fields you defined: text, textarea, select, media, URL, icons, and the other Widget Builder field types can all live inside a Repeater. This differs from the single-value fields like Text in one important way: the connection to your HTML is a loop, not a one-off shortcode. If you are new to building widgets, start with the Widget Builder overview first.

Before you start #

  • WordPress with Elementor installed and active.
  • Master Addons for Elementor installed and active. New to the plugin? See the installation guide.
  • A custom widget open in the Widget Builder editor. Our example is a restaurant “signature dishes” section that renders a 3-column grid of cards, one card per Repeater row.

How to add a Repeater field #

In the Widget Builder editor, scroll the fields panel on the left until you find the Repeater field, listed with the other structural fields.

Drag the Repeater into a section under the Content tab, where repeating content belongs. Once it lands, the field’s options open on the left, and this is where the real setup happens: defining the sub-fields each row will carry.

Repeater field options in the Master Addons Widget Builder with the Label Signature Dishes, the Name signature_dishes, and the sub-fields list beside the widget HTML

Repeater field options explained #

  • Label: the heading shown above the rows in Elementor, for example “Signature Dishes”.
  • Name: the unique identifier for the whole repeater, letters, numbers, and underscores only. This is the name your loop refers to, for example signature_dishes.
  • Fields: the sub-fields every row contains. Add one per piece of per-item content — in the dish example: a Dish Name text field, a Price text field, a Description textarea, and a Tag Style select.
  • Title Field: which sub-field labels the collapsed row, written as {{{ dish_name }}}. Defaults to the first sub-field, which is usually what you want.
  • Default: the rows the widget starts with. Ship two or three filled-in items so the widget looks alive on first drop.
  • Button Text: the label on the add button, for example “Add Dish” instead of the generic “Add Item”.
  • Prevent Empty: stops the user from deleting the last remaining row.
  • Min / Max Items: optional bounds on how few or how many rows are allowed.
Sub-fields of a Repeater in the Widget Builder with the field type dropdown open and the Title Field set to dish_name
Repeater Default Value rows and the Prevent Empty toggle in the Widget Builder, with the sub-field dropdown listing dish_name, dish_price, and the tag fields

Connect the Repeater to your HTML with a loop #

Here is the part that works differently from every single-value field: the Repeater has no plain {{shortcode}}. Its value is a list of rows, so your HTML wraps the repeating markup in a {% for %} block. Inside the loop, each sub-field is available on the loop variable:

<div class="dish-grid">
  {% for dish in signature_dishes %}
  <article class="dish-card">
    <h3>{{ dish.dish_name }}</h3>
    <span class="price">{{ dish.dish_price }}</span>
    <p>{{ dish.dish_desc }}</p>
  </article>
  {% endfor %}
</div>
  • signature_dishes is the Repeater’s Name.
  • dish is a loop variable you invent on the spot; call it anything.
  • {{ dish.dish_name }} prints that row’s Dish Name. Every sub-field works the same way: {{ dish.<sub_field_name> }}.
  • Everything between {% for %} and {% endfor %} prints once per row, in the order the rows sit in the panel.
Widget Builder HTML editor with the {% for dish in signature_dishes %} loop highlighted and the shortcode Documentation sidebar beside it

Optional fields inside the loop #

Wrap anything optional in an {% if %} block so empty fields don’t leave stray markup behind. In the dish example, each card has an optional tag badge:

{% if dish.tag_text %}
<span class="tag tag--{{ dish.tag_style }}">{{ dish.tag_text }}</span>
{% endif %}

A row with an empty Tag Text renders no badge at all. The {% if %} block also accepts comparisons like {% if dish.tag_style == 'spicy' %} when you need markup that changes per value.

Media and link sub-fields #

An image sub-field prints its URL directly, as in <img src="{{ dish.photo }}">, and a URL sub-field exposes its address the same way. Nested properties are available with dot notation when you need them.

Use the Repeater in Elementor #

Add your custom widget to a page in Elementor, or reload the editor if the page was already open. The Repeater shows up as a stack of rows under the label you set, each row titled by its Title Field.

Repeater rows in the Elementor panel with three collapsed dish items, an expanded row being edited, an Add Dish button, and the live dish grid in the preview

Click a row to expand its sub-fields and edit them; the preview updates live. If a new row renders nothing at all, check that the loop name in your HTML matches the Repeater’s Name field exactly — a mismatch fails silently instead of throwing an error. Click Add Dish (or whatever your Button Text says) and a new row appears with your default values, ready to edit. Drag the handle on any row to reorder, and the cards on the page follow.

Because the loop prints every row, the layout grows with the content. In our 3-column dish grid, the first three cards fill a row; a fourth dish starts a second row underneath, automatically, because that is how the widget’s CSS grid wraps.

Finished signature dishes section with a fourth New Dish card added from the Repeater wrapping to a second row under the 3-column grid

Common use cases #

  • Card grids — services, features, pricing tiers, dishes, or team members, one row per card.
  • Menus and price lists — restaurants, salons, and gyms where items change weekly.
  • Logo walls and client lists — an image sub-field per row.
  • FAQ and accordion sections — a question text field and an answer textarea per row.
  • Timelines and process steps — ordered rows the user can drag into sequence.

Tips for working with the Repeater field #

  • The loop is the connection. There is no {{repeater_name}} shortcode to print on its own; the repeater only makes sense inside {% for %}…{% endfor %}.
  • Ship real defaults. Two or three filled-in rows make the widget presentable the moment it is dropped, and they double as an example of what each field expects.
  • Set the Title Field. Collapsed rows labeled “Margherita del Forno” are far easier to manage than three rows all labeled “Item”.
  • Guard optional fields with {% if %}. Empty spans and empty wrappers are invisible until they break your spacing.
  • Let CSS handle the row count. A grid with repeat(3, 1fr) wraps extra items to new rows on its own; the loop just prints cards.
  • Name sub-fields clearly. {{ dish.dish_price }} reads better in a template than {{ dish.field_2 }}, for you and for whoever inherits the widget.

Frequently Asked Questions #

What is the Repeater field in the Master Addons Widget Builder?

The Repeater field adds Elementor’s repeatable-rows control to a custom widget. You define a set of sub-fields once, and users add, duplicate, reorder, and remove rows from the Elementor panel. Your HTML prints each row through a for loop, so the layout grows with the content.

How do I display Repeater items in my widget HTML?

Wrap the repeating markup in a loop: {% for item in my_repeater %} … {% endfor %}, where my_repeater is the Repeater’s Name. Inside the loop, print sub-fields with {{ item.sub_field_name }}. The block renders once per row, in panel order.

Which field types can go inside a Repeater?

The common Widget Builder field types work as sub-fields: text, textarea, select, choose, media, URL, icons, slider, and dimensions among them. Each row carries its own values for every sub-field you define.

Can I limit how many items a user can add?

Yes. Min Items and Max Items bound the row count, and Prevent Empty stops the last row from being deleted. Leave them unset and the list is unlimited.

How do the extra cards flow after the first row is full?

That is the widget CSS’s job, not the Repeater’s. A grid container with, say, three columns wraps the fourth item to a new row automatically. The loop just outputs one block of markup per row and the layout takes it from there.

Why does my collapsed row say “Item” instead of its name?

The Title Field is unset or points at an empty sub-field. Set it to a triple-brace template like {{{ dish_name }}}, using your first sub-field’s name, and each collapsed row shows its own value.

Wrapping up #

The Widget Builder Repeater field is what turns a fixed layout into a living one: define the sub-fields, print them in a {% for %} loop, and every content decision after that happens in the Elementor panel: add a card, drag it into place, delete it next season. Pair it with the Typography field for editor-controlled fonts and the Border field for card styling, and a single widget covers a whole section of the page. Explore the rest of the Master Addons widgets and extensions, and see the pricing page for what each plan includes.

What are your Feelings

Share This Article :

  • Facebook
  • X
  • LinkedIn
  • Pinterest
Still stuck? How can we help?

How can we help?

Updated on August 6, 2026
TabsVisual Choice
Table of Contents
  • What the Repeater field does
  • Before you start
  • How to add a Repeater field
  • Repeater field options explained
  • Connect the Repeater to your HTML with a loop
    • {{ dish.dish_name }}
    • Optional fields inside the loop
    • Media and link sub-fields
  • Use the Repeater in Elementor
  • Common use cases
  • Tips for working with the Repeater field
  • Frequently Asked Questions
    • What is the Repeater field in the Master Addons Widget Builder?
    • How do I display Repeater items in my widget HTML?
    • Which field types can go inside a Repeater?
    • Can I limit how many items a user can add?
    • How do the extra cards flow after the first row is full?
    • Why does my collapsed row say "Item" instead of its name?
  • Wrapping up

Join 30,000+ Web Creators Who Trust Master Addons

Get all the premium widgets and templates you desire, built with clean code that keeps your site fast. Ditch the bloat, not the features.

Try Live Demo
Join The Community
Master Addons for Elementor

80+ Premium Widgets & Lifetime Updates – Build Beyond Limits. An Exclusive Creation by Pixar Labs

Facebook-f Twitter Youtube Wordpress
Features
  • Template kits
  • Template Library
  • Widget Builder
  • Theme Builder
  • Mega Menu Builder
Support
  • Support Forum
  • Contact US
  • Join Community
  • Blog
  • Video Reviews
Resources
  • My Account
  • Changlogs
  • Documentation
  • Video Tutorials
  • Toolz.dev
Navigate
  • Apply for Affiliate
  • Terms of Use
  • Refund Policy
  • Privacy Policy
  • About Us