Modes are the main transformations applied to your HTML. You can enable multiple modes at once — they stack. All modes respect the Intensity % setting.
⊞ Table layout
Wraps each word in visible text nodes in its own <span style="display:inline-block;padding:0 2px;">. Word order is preserved — the email reads identically. The HTML structure becomes much more complex and harder for spam filters to pattern-match against known templates.
When to use: When you want the source structure to look different from a standard flat text template without changing the reading experience.
<p>Win a huge prize today!</p>
<p><span style="display:inline-block;padding:0 2px;">Win</span> <span style="display:inline-block;padding:0 2px;">a</span> <span style="display:inline-block;padding:0 2px;">huge</span>...</p>
↔ Split & invert
Inserts invisible zero-width space characters (Unicode U+200B) between randomly selected character pairs in every word. These characters are completely invisible to human readers — the word looks and reads normally. Spam filters doing exact string matching see a broken pattern they cannot recognise.
Win a prize
Win a prize
Aa Wrap letters in SPAN
Wraps every non-whitespace character in its own <span></span>. The email looks identical but the HTML source is much harder to pattern-match because every word is broken into individual tags.
Hello
<span>H</span><span>e</span><span>l</span><span>l</span><span>o</span>
¶ Wrap text nodes
Wraps each entire text block in a single <span>. Unlike "Wrap letters" it doesn't break words apart — it just adds a container. The email renders identically.
<p>Click here to win!</p>
<p><span>Click here to win!</span></p>
≈ Synonym swap
Replaces common spam-trigger words with contextual synonyms. For example free becomes complimentary, win becomes earn. The Intensity setting controls what percentage of trigger words are replaced — at 50% about half the found words get swapped, keeping the email reading naturally.
Built-in trigger words include: free, win, bonus, prize, cash, money, limited time, act now, urgent, exclusive, click here, buy now, and 20 more.
🔗 Randomize links
Appends random query parameters to every href URL in the HTML. The link still works — it goes to the same destination — but the URL string is different every time. Useful for making each variation trackable and unique.
href="https://example.com"
href="https://example.com?r=73841&_v=512"
🖼 Images → Base64 Needs internet
Downloads each external <img> image and converts it to a Base64 data URI embedded directly in the HTML. This means the image is no longer loaded from an external server — it's baked into the file.
🖼 Unique Base64 Needs internet
Same as Base64 but appends a unique random suffix to each image's data URI per variation. This means every output file has a slightly different image string even though the image looks identical. Useful for making each file cryptographically distinct.
◻ Images → background-image
Replaces every <img> tag with a <div> that uses the same image as a CSS background-image. The visual result is similar but the HTML structure is completely different from a standard img tag.
<img src="banner.jpg" width="600" height="200" alt="Banner">
<div style="background:url(banner.jpg) no-repeat center/contain;width:600px;min-height:200px;display:block;" role="img" aria-label="Banner"></div>
💬 Comment break
Inserts an empty HTML comment <!----> at a random position inside words in text nodes. Email clients (Outlook, Gmail, Apple Mail) strip HTML comments when rendering — the reader sees the full, unbroken word. Spam filters that do exact byte-level string matching see a broken pattern.
free bonus offer
fr<!---->ee bo<!---->nus of<!---->fer
⇄ Shuffle attributes
Randomly shuffles the order of HTML attributes on every tag. For example, a tag that originally has src then alt then width might be reordered to width then src then alt. Browsers and email clients parse attributes regardless of order — the email renders identically. The source fingerprint changes every time.
<img src="img.jpg" alt="Photo" width="600" height="300">
<img height="300" src="img.jpg" width="600" alt="Photo">
🗑 Delete tags
Removes <script> and <noscript> tags from the HTML. These are execution-risk tags that spam filters flag. Style, meta, and link tags are kept intact so your email layout and CSS rules are never affected.
<style>, <meta>, <link>) are preserved.Color variation range
Each hex color and rgb() value in the HTML is shifted by a random amount up to this value. Default: 11. At range 11, colors shift by up to ±11 on each RGB channel — a subtle difference invisible to the human eye but detectable in source comparison. Set to 0 to disable.
color: #3b82f6
color: #2e7af4
Padding / Margin range (px)
All padding and margin values are shifted by up to this many pixels. Default: 5. At range 5, a padding: 20px might become padding: 18px. Layout stays visually intact. Set to 0 to disable.
Number of output files
How many unique variations to generate when you click Generate & Download. Default: 5. Each file gets its own independent set of random changes. Maximum: 100.
Intensity %
The master dial for how aggressively transforms are applied. Range 0–100%, default 60%.
- 0% — no text nodes transformed at all, color/padding ranges scale to 0
- 30% — subtle: only about 30% of eligible text nodes get transformed
- 60% (default) — moderate: good balance between variation and readability
- 100% — maximum: every eligible element is transformed
intensity / 100.
Just want variation, email must look perfect: Intensity 30–50% + Safe Mode ON
Maximum uniqueness, don't care about readability: Intensity 100%, all modes enabled
Balanced: Intensity 60% (default), Safe Mode OFF, 2–3 modes selected
These toggles run after all Modes have been applied. They are independent of mode selection — they always run when enabled.
Rename class and id ON by default
Renames every class="" and id="" attribute to a unique random string like vx_0_ab3cd. Also updates matching selectors inside any <style> blocks so CSS rules stay linked. Makes fingerprinting the template much harder.
<td class="header">
<td class="vx_0_k3p9q">
Randomly replace tags ON by default
Swaps HTML tags with compatible alternatives that have the same display type. For example <div> may become <section> or <article>. <span> may become <em> or <strong>. Table structure tags (table, tr, td, th) are never swapped to prevent layout breakage.
Font alternatives OFF by default
Swaps font-family declarations with equivalent alternatives. For example Arial may become Helvetica, Georgia may become Times New Roman. The email looks virtually identical because the fonts are similar.
Add HTML comments OFF by default
Inserts random HTML comments between tags, such as <!-- section-1047 --> or <!--[if gte mso 9]><![endif]-->. Comments are invisible to email recipients but differ in every variation. Only injected outside of <head>, <style>, and <script> blocks.
Character encoding variation OFF by default
Randomly converts some vowels and common characters (a, e, i, o, s) to their HTML entity equivalents. For example a → a. The browser renders them identically but the raw HTML looks different. The Intensity setting controls the probability of each character being encoded.
earn
earn
Inline styles → classes OFF by default
Moves repeated inline style="" attributes into a <style> block and replaces them with unique class names. Reduces file size when many elements share the same styles. The email renders identically.
Convert output to image (PNG) OFF by default
After all transforms, renders the HTML to a <canvas> using html2canvas and saves each variation as a PNG image instead of an HTML file. The ZIP will contain PNG files instead of HTML files. Useful for creating image-only emails that bypass text-based filters entirely.
python -m http.server 3333 in the violmixxer folder and open http://localhost:3333 for the most reliable rendering. From file:// some cross-origin resources may not render.
Safe mode (letter stays readable) ON by default
When enabled, violmixxer guarantees the email output is visually identical to the input. The following are automatically skipped regardless of your other settings:
- Table layout mode — skipped (wraps words in spans; can affect line wrapping in narrow containers)
- Randomly replace tags — skipped (structural tag changes can affect rendering in strict email clients)
- Inline styles → classes — skipped (some email clients don't support embedded CSS, so this can break layout)
All other modes and transforms still run with Safe Mode ON — Split & invert, Comment break, Shuffle attributes, Synonym swap, Character encoding, Randomize links, Color/padding variation, Rename class/id, Font alternatives, Add HTML comments. All of these are invisible to human readers.
Instead of transforming the entire file, you can select a portion of the HTML in the code editor and transform only that selection. The rest of the template is left completely untouched.
Ctrl+Z in the editor to undo a transform selection if you don't like the result.
<tag> to the closing </tag>) for the cleanest results. Selecting partial attributes or mid-tag text can produce malformed HTML.
Safe Mode is a single toggle in the Always-on Transforms card. When enabled, violmixxer automatically disables any transform that could cause the email to render differently for human readers.
| Transform | Safe Mode OFF | Safe Mode ON |
|---|---|---|
| Split & invert (bidi trick) | Runs ✓ | Runs ✓ (visually safe) |
| Wrap letters / Wrap text nodes | Runs ✓ | Runs ✓ (visually safe) |
| Synonym swap | Runs ✓ | Runs ✓ |
| Randomize links | Runs ✓ | Runs ✓ |
| Color variation | Runs ✓ | Runs ✓ |
| Class/id rename | Runs ✓ | Runs ✓ |
| Table layout (shuffles words) | Runs ✓ | Skipped ✕ |
| Replace tags | Runs ✓ | Skipped ✕ |
| Inline → classes | Runs ✓ | Skipped ✕ |
Intensity is documented in the Parameters section above.
Click Analyze Template in the top bar to scan your pasted HTML and get a report. No external requests are made — analysis runs entirely in your browser.
Stats
The analyzer counts: total word count, number of <img> tags, number of <a> links, and total HTML file size in KB.
Spam Score
The analyzer checks the visible text against a list of 50+ known spam trigger words. The score (0–100) shows how risky the template looks to spam filters:
- 0–20 — Low risk — few or no trigger words
- 21–49 — Medium risk — some common trigger words present
- 50+ — High risk — many trigger words, recommend running Synonym swap mode
Spam Trigger Words
All detected trigger words are listed as individual tags. Use the Synonym swap mode to automatically replace them.
External References
All href, src, and CSS url() values pointing to external domains are listed. This helps you identify which images or links are loaded from third-party servers — potential tracking vectors or deliverability risks.
Preview one
Generates a single variation and displays it in the preview iframe on the left. Use this to quickly check whether your settings produce the output you want before committing to a full batch.
Generate & Download
Generates N independent variations (where N = Number of output files setting) and packages them into a single ZIP file named violmixxer-output.zip. The ZIP contains:
violmixxer-1.htmlthroughviolmixxer-N.html— when Convert to Image is OFFviolmixxer-1.pngthroughviolmixxer-N.png— when Convert to Image is ON
Copy HTML
Copies the last generated variation to your clipboard as raw HTML text. You can then paste it directly into your email sending tool.
Fetch URL tab
Instead of pasting HTML manually, enter a URL in the Fetch URL tab and click Fetch & Load. violmixxer tries to load the page in this order:
- Direct fetch (works on localhost or same-origin)
corsproxy.io— free public CORS proxyapi.allorigins.win— second free proxy
| Feature | Works offline (file://)? | Notes |
|---|---|---|
| All text modes (Table, Split & invert, Wrap letters, Wrap text, Synonym) | Yes | No network needed |
| Comment break | Yes | Inserts HTML comments — pure string manipulation |
| Shuffle attributes | Yes | Reorders tag attributes — pure string manipulation |
| Randomize links | Yes | Just rewrites href text |
| Images → bg-image | Yes | Rewrites HTML structure only |
| Delete tags | Yes | Strips script/noscript tags from source |
| Color / Padding variation | Yes | Pure string manipulation |
| Rename class/id | Yes | Pure string manipulation |
| Replace tags / Font alternatives | Yes | Pure string manipulation |
| HTML comments / Char encoding | Yes | Pure string manipulation |
| Inline → classes | Yes | Pure string manipulation |
| Preview & Generate & Download | Yes | All client-side |
| Template Analyzer | Yes | All client-side |
| Fetch URL | Partial | Tries 2 public CORS proxies — works for most URLs, some may block |
| Images → Base64 / Unique Base64 | Partial | Needs CORS-accessible image URLs. Blocked images are left as-is. |
| Convert to image (PNG) | Partial | Works from file:// but external resources won't render. Use a local server for best results. |
Open a terminal, navigate to the violmixxer folder, and run:
python -m http.server 3333Then open
http://localhost:3333 in your browser.