Skip to main content

Overview

The toPlainText() function converts HTML email markup into plain text format. It automatically strips HTML tags and formatting while preserving the textual content, making it ideal for creating plain text versions of your emails.

Import

import { toPlainText } from 'better-svelte-email/render';

Signature

function toPlainText(markup: string): string

Parameters

markup
string
required
The HTML string to convert to plain text

Returns

result
string
Plain text representation of the HTML markup

Behavior

The function:
  • Removes all HTML tags and attributes
  • Preserves text content and structure
  • Skips image elements (<img> tags)
  • Skips preview text elements (elements with id #__better-svelte-email-preview)

Usage Example

Basic Usage

import Renderer from 'better-svelte-email/renderer';
import { toPlainText } from 'better-svelte-email/render';
import WelcomeEmail from '$lib/emails/welcome.svelte';

const renderer = new Renderer();
const html = await renderer.render(WelcomeEmail, {
  props: { name: 'John Doe' }
});

const plainText = toPlainText(html);
console.log(plainText);
// Output: Plain text version of the email

Sending Both HTML and Plain Text

import Renderer from 'better-svelte-email/renderer';
import { toPlainText } from 'better-svelte-email/render';
import { sendEmail } from './email-service';
import OrderConfirmation from '$lib/emails/order-confirmation.svelte';

const renderer = new Renderer();
const html = await renderer.render(OrderConfirmation, {
  props: {
    orderNumber: '12345',
    items: [...]
  }
});

const text = toPlainText(html);

await sendEmail({
  to: '[email protected]',
  subject: 'Order Confirmation',
  html,
  text // Plain text fallback
});

Migration Note

The deprecated renderAsPlainText() function from better-svelte-email/utils should be replaced with toPlainText() from better-svelte-email/render.
// Old (deprecated)
import { renderAsPlainText } from 'better-svelte-email/utils';
const text = renderAsPlainText(html);

// New (recommended)
import { toPlainText } from 'better-svelte-email/render';
const text = toPlainText(html);

Build docs developers (and LLMs) love