Print Readability Calculator – Online Minimum Font for Distance
Enter viewing distance to get the minimum readable print font size. Design posters and signs.
UD5 Toolkit
Controls page break before the element
Controls page break after the element
Controls page break inside the element
page-break-inside: avoid works best on block-level elements.
④ For Firefox compatibility, include both page-break-* and break-* properties.
page-break-before is the legacy CSS property that has been supported since CSS2. break-before is the modern CSS3 property introduced as part of the CSS Fragmentation Module. The modern break-before property is more versatile—it works across different fragmentation contexts (pages, columns, regions), not just print. For maximum browser compatibility, it's recommended to include both properties in your CSS, with the modern property after the legacy one as a progressive enhancement.
Value mapping: page-break-before: always → break-before: page | page-break-before: avoid → break-before: avoid-page
Several common reasons can prevent page breaks from working:
@media print { } or the browser is rendering for print.page-break-* properties only work on block-level elements. Elements with display: inline, display: flex, or display: grid may ignore page break rules. Set display: block on the element when printing.overflow: hidden, page-break-inside: avoid, or similar constraints, child page breaks may be suppressed.page-break-inside: avoid to <tr> elements, not the <table> itself.<div> elements may be ignored. Use a non-breaking space or min-height.To prevent a table from splitting across pages, apply page-break-inside: avoid to the table rows (<tr>) rather than the table itself. However, if the table is longer than a single page, the browser will be forced to split it. In that case, you can:
page-break-inside: avoid on individual <tr> elements to keep rows together.<thead> and <tbody> with display: table-header-group to repeat headers on each page.page-break-before: always on specific rows.left and right values are primarily used in book and document publishing where you need content to start on a specific side of a spread:
page-break-before: left – Forces one or two page breaks until the next page is a left-facing (even-numbered) page. This is useful for starting chapters on the left side.page-break-before: right – Forces one or two page breaks until the next page is a right-facing (odd-numbered) page. This is the most common requirement for book chapters, which traditionally start on the right-hand page.left and right behave the same as always in most browsers.For the best cross-browser support, use both legacy and modern properties:
| Browser | page-break-* | break-* | Recommendation |
|---|---|---|---|
| Chrome 120+ | ✅ Full | ✅ Full | Use either |
| Firefox 120+ | ✅ Full | ✅ Full | Both recommended |
| Safari 17+ | ✅ Full | ✅ Full | Use either |
| Edge 120+ | ✅ Full | ✅ Full | Use either |
| Older browsers | ✅ Supported | ⚠️ Partial | Include legacy |
Best practice: Always include both page-break-* and break-* with the same values for maximum compatibility.
There are several ways to preview print styles without wasting paper:
print. The page will render with print styles applied.border-top: 3px dashed red alongside your page-break-before: always rules to see breaks on screen.Page break properties have limited support within flexbox and grid containers. The CSS specification states that page breaks only apply to block-level elements in normal flow. Flex and grid items are not in normal flow, so page-break-* may be ignored.
Workarounds:
@media print styles, change the container to display: block and children to display: block with appropriate widths.break-before: page on block-level wrappers around flex/grid items.break-inside: avoid-column as an alternative for multi-column print layouts.In the modern CSS Fragmentation specification, break-before accepts different values depending on the fragmentation context:
break-before: page – Forces a break only in paged media (printing). This is the direct equivalent of page-break-before: always.break-before: always – Forces a break in all fragmentation contexts: pages, columns, and regions. This is more aggressive.break-before: avoid-page – Avoids a break in paged media only (equivalent to page-break-before: avoid).break-before: avoid-column – Avoids a break in multi-column layouts only.break-before: avoid – Avoids a break in all fragmentation contexts.For print-specific styles, break-before: page is the most precise modern equivalent to page-break-before: always.
Enter viewing distance to get the minimum readable print font size. Design posters and signs.
Enter CMYK values and find the closest Pantone Solid Coated color. For print design reference. Client‑side lookup.
Enter a router's MAC address or serial and generate the common default WPA passphrase for major ISP brands. Educational purpose only.
Pick colors for the shadcn/ui design system and generate the complete CSS variable theme file. Copy into your project.
Paste your CSS and see warnings for properties that have limited browser support. Links to CanIUse. Modernize safely.
Format a list of Q&A pairs and export as a CSV ready for Anki import. Simple line‑based template. Local.
Style underlines, overlines, and strike-throughs with colors, wavy styles, and thickness. Modern CSS text‑decoration.
Generate a random medieval occupation with a short description. For NPCs or historical curiosity. Local list.
Generate a hardboiled film noir plot with a detective, a dame, and a McGuffin. Great for creative writing prompts.
Generate a grand, aristocratic title like 'Duke of Waffleshire'. Perfect for silly fun or RPG characters. Local.
Design a button or card that glows on hover. Adjust shadow color, spread, and transition. Copy the CSS. Rich UI.
Create a realistic letterpress (debossed) text effect using CSS text‑shadow and background. Adjust depth and light direction. Copy code.
Generate a realistic‑sounding dinosaur name and see a fun description. Perfect for kids and writers.
Generate random but realistic‑looking data arrays (users, products, orders) with typos and missing fields. For test robustness.
Create a customizable checkerboard or grid background using pure CSS gradients. Adjust cell size and colors. Copy the code.
Create a custom HTML/CSS progress bar with percentage, colors, and animation. Copy the code. Modern UI element.
Fill in a few details and get a polished resignation letter. No data stored. Instant copy or print.
Paste plain text and turn it into a nested outline using indent levels or Markdown headings. Great for planning.
Convert short text into a black‑and‑white Braille bump image ready for embossing. Educational and inclusive.
Generate a random, somewhat meaningful song lyric line. Write your own hit with AI‑free randomness. All local.
A replica of the famous Flexbox Froggy game: solve alignment puzzles by writing CSS. Progress saved locally. Fun frontend learning.
Interlace two images into a striped pattern for lenticular lens printing. Preview with simulated tilt. DIY fun.
Generate a realistic‑sounding exoplanet designation (e.g., Kepler‑442b) and a sci‑fi planet description. For worldbuilding.
Create a realistic‑looking fake tweet with any name, handle, text, likes, and retweets. Just for laughs. All local canvas.
Generate magic squares of odd order (3x3, 5x5, …). See the sum constant and verify rows, columns, diagonals. Educational math toy.
One click to get a hilarious excuse for being late, missing homework, or not doing chores. Pure comedy.
Design a realistic-looking fake receipt with custom store name, items, and total. For jokes and gags. No real transaction.
Click to generate a random haiku from natural language templates. Pure algorithmic poetry fun. Copy and share.
Generate a QR code with a custom text label below or above. Perfect for printed signs. All generated locally as a single image.
Convert any image into beautiful ASCII art. Adjust brightness and character set for the best effect. Share text-based pictures. Runs entirely in the browser.