*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;color:#3d3654;font-family:ui-rounded,'SF Pro Rounded','Segoe UI',system-ui,-apple-system,Arial,sans-serif;line-height:1.7;font-size:17px;background:linear-gradient(180deg,#ede9fe 0%,#f7f4ff 340px,#fff9f3 900px,#f2fbf6 100%)} h1,h2,h3{color:#2c2545;line-height:1.25;font-weight:800} a{color:#6d28d9;text-decoration:none} a:hover{text-decoration:underline} .wrap{max-width:1120px;margin:0 auto;padding:0 24px} .site-header{background:rgba(255,255,255,.85);backdrop-filter:blur(10px);position:sticky;top:0;z-index:50;border-bottom:3px solid #ede9fe} .site-header .wrap{display:flex;align-items:center;gap:20px;padding:12px 24px;flex-wrap:wrap} .brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#2c2545;font-weight:800;font-size:22px} .brand:hover{text-decoration:none} .brand svg{width:38px;height:38px} .nav{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto;align-items:center} .nav a{text-decoration:none;color:#3d3654;font-weight:700;font-size:14.5px;padding:9px 14px;border-radius:999px} .nav a:hover{background:#ede9fe;text-decoration:none;color:#6d28d9} .nav a.cta{background:#6d28d9;color:#fff;box-shadow:0 6px 18px rgba(109,40,217,.28)} .nav a.cta:hover{background:#5b21b6;color:#fff} .dots{position:absolute;inset:0;background-image:radial-gradient(#c4b5fd 2.2px,transparent 2.3px);background-size:22px 22px;opacity:.35;pointer-events:none} .hero{padding:58px 0 12px;position:relative;overflow:hidden} .hero-inner{position:relative} .eyebrow{display:inline-block;background:#ffedd5;color:#9a3412;font-weight:800;font-size:13px;letter-spacing:1.5px;text-transform:uppercase;padding:8px 18px;border-radius:999px;margin-bottom:16px;box-shadow:0 6px 16px rgba(251,146,60,.25)} .hero h1{font-size:clamp(36px,5.6vw,60px);margin:0 0 16px;letter-spacing:-.5px} .hero h1 .hl{color:#6d28d9} .lede{max-width:66ch;color:#5b5478;font-size:18px} .tool-card{background:#fff;border-radius:24px;margin:30px 0 12px;box-shadow:0 18px 48px rgba(139,92,246,.16);border:1px solid #ede9fe;overflow:hidden} .tool-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:20px 26px;background:linear-gradient(135deg,#ede9fe,#ffedd5);border-bottom:1px solid #f1eafd} .tool-head h2{margin:0;font-size:24px} .privacy-chip{margin-left:auto;display:inline-flex;align-items:center;gap:8px;background:#fff;border:2px solid #6d28d9;color:#6d28d9;font-weight:800;font-size:13px;padding:8px 16px;border-radius:999px} .privacy-chip svg{width:16px;height:16px} .tool-body{padding:28px 26px} .opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px;margin-bottom:24px} .opt{background:#faf9ff;border:2px solid #ede9fe;padding:18px;border-radius:18px} .opt.mint{background:#f2fbf6;border-color:#d1fae5} .opt.peach{background:#fffaf3;border-color:#ffedd5} .opt-label{display:block;font-weight:800;font-size:14px;letter-spacing:.6px;text-transform:uppercase;color:#6d28d9;margin-bottom:12px} .opt.mint .opt-label{color:#047857} .opt.peach .opt-label{color:#c2410c} .opt-hint{font-size:13.5px;color:#8a84a3;margin:10px 0 0} .seg{display:flex;flex-wrap:wrap;gap:8px} .seg button{border:2px solid #ddd6fe;background:#fff;color:#3d3654;padding:8px 15px;font-weight:700;font-size:13.5px;cursor:pointer;font-family:inherit;border-radius:999px;transition:all .15s} .seg button:hover{border-color:#a78bfa} .seg button[aria-pressed="true"]{background:#6d28d9;color:#fff;border-color:#6d28d9;box-shadow:0 4px 12px rgba(109,40,217,.3)} .opt.mint .seg button[aria-pressed="true"]{background:#059669;border-color:#059669;box-shadow:0 4px 12px rgba(5,150,105,.3)} .opt.peach .seg button[aria-pressed="true"]{background:#ea580c;border-color:#ea580c;box-shadow:0 4px 12px rgba(234,88,12,.3)} .num-row{display:flex;align-items:center;gap:12px} .num-row input[type=range]{flex:1;accent-color:#6d28d9} .num-row input[type=number]{width:70px;border:2px solid #ddd6fe;border-radius:12px;padding:8px 10px;font-size:15px;font-family:inherit;background:#fff;color:#3d3654} .count-val{font-weight:800;color:#6d28d9;font-size:20px;min-width:40px;text-align:center} .actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:8px} .btn{border:2px solid #6d28d9;background:transparent;color:#6d28d9;padding:12px 26px;font-weight:800;font-size:15px;cursor:pointer;font-family:inherit;border-radius:999px;display:inline-flex;align-items:center;gap:9px;text-decoration:none;transition:all .15s} .btn:hover{background:#ede9fe;text-decoration:none} .btn.primary{background:#6d28d9;color:#fff;box-shadow:0 8px 22px rgba(109,40,217,.32)} .btn.primary:hover{background:#5b21b6} .btn svg{width:17px;height:17px} .btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none} .copy-note{font-size:14px;font-weight:700;color:#059669} .output{margin-top:20px;background:#faf9ff;border:2px solid #ede9fe;min-height:130px;padding:20px;border-radius:18px} .output ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px} .output li{background:#fff;border:1px solid #ede9fe;border-radius:16px;padding:14px 18px;cursor:pointer;box-shadow:0 6px 18px rgba(139,92,246,.08);display:flex;gap:14px;align-items:flex-start} .output li:hover{box-shadow:0 10px 24px rgba(139,92,246,.16)} .output li .idx{flex:none;width:38px;height:38px;border-radius:50%;background:#ede9fe;color:#6d28d9;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:15px} .output li .txt{min-width:0} .output li .nm{display:block;font-weight:800;font-size:16.5px;color:#2c2545} .output li .ds{display:block;font-size:14px;color:#5b5478} .output li .rl{display:block;font-size:13px;color:#047857;margin-top:3px} .output li .mini-copy{margin-left:auto;flex:none;font-size:12px;font-weight:800;color:#6d28d9;border:2px dashed #c4b5fd;padding:5px 12px;border-radius:999px;align-self:center} .output .placeholder{color:#a5a0bd;text-align:center;margin:32px 0;font-size:15px} .output-meta{margin-top:12px;font-size:13.5px;color:#8a84a3} .limits{margin-top:22px;background:#fffaf3;border:2px dashed #fb923c;padding:20px 22px;border-radius:18px} .limits h3{margin:0 0 10px;font-size:19px;color:#9a3412;display:flex;align-items:center;gap:10px} .limits h3 svg{width:22px;height:22px;flex:none} .limits ul{margin:0;padding-left:20px;font-size:15px;color:#5b5478} .limits li{margin-bottom:7px} .section{padding:52px 0 8px} .section h2{font-size:clamp(28px,3.6vw,40px);margin:0 0 14px} .section h2 .hl{color:#6d28d9} .sub{color:#5b5478;max-width:68ch;margin:0 0 24px} .cards3{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:20px} .card{background:#fff;border:1px solid #ede9fe;border-radius:24px;padding:24px;box-shadow:0 12px 30px rgba(139,92,246,.10);display:flex;flex-direction:column} .card.peach{border-color:#ffedd5;box-shadow:0 12px 30px rgba(251,146,60,.10)} .card.mint{border-color:#d1fae5;box-shadow:0 12px 30px rgba(16,185,129,.10)} .card h3{margin:0 0 10px;font-size:19px} .card p{margin:0 0 14px;color:#5b5478;font-size:15px;flex:1} .card .icon{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:14px} .card .icon svg{width:24px;height:24px} .card a.more{font-weight:800;font-size:14.5px} .prose{max-width:74ch} .prose p{margin:0 0 16px} .prose h2{margin:36px 0 12px;font-size:27px} .prose h3{margin:28px 0 10px;font-size:20px} .prose ul,.prose ol{margin:0 0 18px;padding-left:22px} .prose li{margin-bottom:8px} .prose table{width:100%;border-collapse:collapse;margin:18px 0;font-size:15.5px} .prose th{background:#ede9fe;color:#2c2545;text-align:left;padding:10px 14px} .prose td{padding:10px 14px;border-bottom:1px solid #ede9fe} .callout{background:#ede9fe;border-radius:18px;padding:18px 22px;margin:20px 0} .callout.peach{background:#ffedd5} .callout.mint{background:#d1fae5} .faq-item{background:#fff;border:1px solid #ede9fe;border-radius:18px;padding:18px 22px;margin-bottom:14px;box-shadow:0 8px 22px rgba(139,92,246,.08)} .faq-item h3{margin:0 0 8px;font-size:18px} .faq-item p{margin:0;color:#5b5478;font-size:15.5px} .site-footer{background:#2c2545;color:#cfc9e8;margin-top:70px;padding:44px 0 30px} .site-footer .wrap{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:26px} .site-footer h4{color:#fff;margin:0 0 12px;font-size:16px} .site-footer a{color:#cfc9e8;font-size:14.5px;display:block;margin-bottom:8px} .site-footer a:hover{color:#fff} .site-footer .fine{grid-column:1/-1;font-size:13px;color:#9d95c4;border-top:1px solid #453d68;padding-top:18px;margin-top:6px} .breadcrumb{font-size:13.5px;color:#8a84a3;margin:22px 0 0} .breadcrumb a{color:#6d28d9} .page-hero{padding:44px 0 6px} .page-hero h1{font-size:clamp(32px,4.6vw,48px);margin:0 0 14px} @media(max-width:700px){.tool-body{padding:20px 16px}.output li{flex-wrap:wrap}.nav{margin-left:0}}
Free Marketing Offer Generator

Stuck for a promo idea?
Meet OfferOrb.

A free marketing offer generator that brainstorms promotional offer ideas in seconds: discounts, BOGO deals, free-shipping offers, gift-with-purchase, bundles, flash sales, and more. Pick a mechanic and a goal, generate up to 20 ideas, and copy or download your favorites. No signup, no cost, and everything happens right in your browser.

Make your offer

100% in your browser
Offer mechanic

Pick the mechanic that fits your margins, or leave it on Any for a mixed brainstorm.

Campaign goal

The goal shapes which mechanics the generator favors in the mix.

How many ideas?
8

1 to 20 ideas per click. Generate again for a fresh set.

Your offer ideas will appear here. Click any idea to copy it.

    Honest limits

    • Brainstorming, not a strategy. OfferOrb suggests mechanics and headline ideas; it does not know your margins, costs, or customers.
    • Placeholder numbers. Discount percentages and thresholds are illustrative examples. Replace them with figures from your own pricing math before publishing.
    • No legal or tax advice. Promotions can trigger pricing, advertising, and tax rules that vary by location. Check the rules that apply to you.
    • Not connected to anything. Generated ideas are not coupons, codes, or live offers, and they do not integrate with any store platform.

    Why most promotions lose money

    Picking the mechanic is the easy part. Whether a promotion adds sales or just gives away margin depends on the rules around it: who can redeem it, on which products, how often, and for how long. Use our types of marketing offers guide to match mechanics to goals, then keep each offer profitable with one simple habit: pair every incentive with a rule that stops it discounting orders you would have won anyway.

    Types of marketing offers

    Percentage discounts, fixed-amount coupons, BOGO, free shipping, gift with purchase, bundles, flash sales, welcome, loyalty, and referral offers, each with its best-fit goal.

    Read the guide

    How to write a marketing offer

    Turn a mechanic into copy that converts: the headline formula, where the value goes, how to state terms without scaring people off.

    Read the guide

    Offer examples by mechanic

    Concrete example offers for every mechanic the generator produces, from "$10 off $50" thresholds to tiered loyalty rewards.

    See examples

    When to use which offer

    Launch week, slow season, cart recovery, inventory clear-out: a use-case map that pairs common business moments with the right mechanic.

    Explore use cases

    Offer FAQ

    How deep should a discount go? How often can you run a sale? Answers to the questions marketers ask before launching a promotion.

    Read the FAQ

    How the generator works

    OfferOrb keeps a bank of offer mechanics, headline templates, and example values. When you click Generate, it uses your browser's built-in cryptographically secure random number generator (crypto.getRandomValues) to combine a mechanic, a headline template, and illustrative numbers into a fresh idea, then pairs each idea with a short explanation and a profitability rule drawn from common promotional pricing practice.

    Nothing leaves your device: there is no account, no tracking of what you generate, and no server involved at all. The ideas refresh every click, so generate a few rounds, copy the ones that fit your margins, and adapt the wording to your brand voice before you publish.