Skiptingar

Icelandic text, set well.

Correct Icelandic hyphenation and typographic rules for the web.

The browser alone

Kjörsókn í Hrafnafjarðarbyggð aldrei meiri í sveitarstjórnarkosningum

Kjörsókn í sveitarstjórnarkosningunum 16. maí 2026 var sú mesta sem mælst hefur í Hrafnafjarðarbyggð, 91,4%. "Þetta er söguleg niðurstaða," sagði dr. Guðrún Sigurðardóttir, formaður yfirkjörstjórnar, kl. 14.30 daginn eftir.

    With Skiptingar

    Kjörsókn í Hrafna­fjarðar­byggð aldrei meiri í sveitar­stjórnar­kosn­ingum

    Kjör­sókn í sveitar­stjórnar­kosn­ing­unum 16. maí 2026 var sú mesta sem mælst hefur í Hrafna­fjarðar­byggð, 91,4%. „Þetta er sögu­leg niður­staða,“ sagði dr. Guð­rún Sig­urðar­dóttir, for­maður yfir­kjör­stjórnar, kl. 14.30 dag­inn eftir.

      • 23.139letter patterns from the 2020 Árni Magnússon list mark where a word may break. There is no dictionary, so new and rare compounds break well too.
      • 36words marked by hand: a few the patterns break wrongly or not at all, and compounds whose joints titles should break at. Your own words go in a dictionary option.
      • 0 kBof JavaScript to hyphenate. The server puts the soft hyphens in, so every browser gets the same places to break.

      Try it

      Write your own text, change the measure and the rules, and see where it breaks.

      85 wordsStart a line with # to make it a title.The page now uses this text
      ModeBody breaks a word at every allowed spot. Heading is stricter: only long words break, with more letters kept on each side, and a word breaks only at its compound joints when one fits: those on the exception list, the break after a linking syllable (stjórnar-völd) and a name’s ending (Sigurðar-dóttir).
      RulesTypographic keeps only breaks that look good: in body text, words of 6 or more letters with 2 letters before and 3 after the break (in a heading 12, 3 and 4), and never just before a linking syllable (stjórnar-völd, not stjórn-ar-völd). Ritreglur allows every break the patterns allow, close to the official spelling rules: 1 letter before, 2 after. Words of 4+ letters (Skiptingar’s own limit).
      Options
      Swaps some spaces for no-break spaces, in 1.000 kr. and 30. september for example, straight quotes for Icelandic quotes, and the hyphen in a range like 1990-2010 for an en dash. Each change swaps one character for another.
      Draws a red · for every soft hyphen, and puts every no-break space and non-breaking hyphen (U+2011) on an amber fill, so you can see what the components put in.
      The browser’s own line breaking: text-pretty (text-wrap: pretty) for body text and text-balance (text-wrap: balance) for titles. Off wraps each line greedily. How it works shows each one with and without.

      Kjörsókn í Hrafnafjarðar­byggð aldrei meiri í sveitar­stjórnar­kosningum

      Kjör­sókn í sveitar­stjórnar­kosn­ing­unum 16. maí 2026 var sú mesta sem mælst hefur í Hrafna­fjarðar­byggð, 91,4%. Á ár­unum 1990–⁠2010 var hún að jafn­aði um 78%. „Þetta er sögu­leg niður­staða,“ sagði dr. Guð­rún Sig­urðar­dóttir, for­maður yfir­kjör­stjórnar, á blaða­manna­fundi kl. 14.30 dag­inn eftir.

      Lands­sam­tök ungra kjós­enda (LUKA) fylgd­ust með fram­kvæmd­inni. Í skýrslu þeirra, á bls. 12, kemur fram að kosn­inga­þátt­taka ungs fólks hafi auk­ist mest. Nán­ari upp­lýs­ingar eru á www.example.is og fyrir­spurnir má senda á kosningar@example.is eða í síma 555‑1234.

      A soft hyphen (U+00AD) is an invisible character. It shows a hyphen only when the line breaks right there.A no-break space (U+00A0) looks like a space but keeps the words on both sides of it on one line.

      Where Icelandic breaks

      Long compound words break at their joints. Patterns come first, then compound knowledge, then exceptions.

      Not built yet.

      Where Icelandic doesn’t break

      Good line breaking also means knowing where not to break.

      Number and unitunits

      Puts a no-break space between a number and its unit, so 1.000 kr. and 5 km never split across two lines.

      Off

      Verð 1.000 kr. og 5 km leið í 20 °C hita.

      On

      Verð 1.000 kr. og 5 km leið í 20 °C hita.

      Datedates

      Keeps a month and the year after it together, so sep. 2026 and sept. 2027 never split.

      Off

      Opnað 30. sep. 2026 og lokað í sept. 2027.

      On

      Opnað 30. sep. 2026 og lokað í sept. 2027.

      Ordinalordinals

      Keeps a number with a full stop, like 1. or 30., on the same line as the lowercase word after it.

      Off

      Hún lenti í 1. sæti í 2. umferð.

      On

      Hún lenti í 1. sæti í 2. umferð.

      Abbreviation and numberprefixes

      Keeps an abbreviation with the number that follows it, so nr. 5, bls. 12 or kl. 14.30 never split across lines. Standard abbreviations like t.d. and o.s.frv. have no spaces, so they never break.

      Off

      Sjá bls. 12, nr. 5 og kl. 14.30.

      On

      Sjá bls. 12, nr. 5 og kl. 14.30.

      Kennitala and phonenumbers

      Kennitala and phone numbers never split across lines: the hyphen becomes a non-breaking hyphen (U+2011) and the spaces become no-break spaces. CleanCopy puts a normal hyphen back when you copy.

      Off

      Kennitala 010190-2939, sími 555-1234 eða +354 555 1234.

      On

      Kennitala 010190‑2939, sími 555‑1234 eða +354 555 1234.

      Titlestitles

      Keeps dr., sr., próf. and hr. on the same line as the capitalised name after them.

      Off

      Fundur með dr. Jóni og sr. Önnu.

      On

      Fundur með dr. Jóni og sr. Önnu.

      One-letter wordssingleLetter

      Puts a no-break space after a one-letter word, so it never ends a line alone. Off by default, so this row turns it on.

      Off

      Hún á hest og býr í Kópavogi.

      On

      Hún á hest og býr í Kópavogi.

      Last two wordslastWords

      Puts a no-break space between the last two words of the text, so the last line is never a single word. Off by default, so this row turns it on. text-pretty does this better where the browser supports it, so use this rule only as a fallback for Firefox and Safari before 26, which do not support it.

      Off

      Þau fóru saman til Akureyrar

      On

      Þau fóru saman til Akureyrar

      Icelandic punctuation

      Quotes, dashes and the other Icelandic conventions, shown before and after.

      Quotesquotes

      Straight double quotes become Icelandic „…“. A paired 'word' becomes ‚word‘, the mark for a word’s meaning (Ritreglur §28.2). A quote inside a quote uses „…“ again: type it that way (§28.1).

      Off

      Hann sagði "komdu heim" og orðið fákur merkir 'hestur'.

      On

      Hann sagði „komdu heim“ og orðið fákur merkir ‚hestur‘.

      Dashesdashes

      Swaps the hyphen in a number range, and a spaced hyphen, for an en dash. Off by default, so this row turns it on.

      Off

      Árin 1990-2000 var veturinn - og þá sérstaklega febrúar - óvenju mildur.

      On

      Árin 1990–⁠2000 var veturinn – og þá sérstaklega febrúar – óvenju mildur.

      Real interfaces

      Actual interface problems, such as a heading at phone width, rather than isolated linguistic examples.

      Heading, phone width

      Without the package a long compound runs out of the box. With it the word breaks at a joint, and text-wrap: balance evens out the lines. Why, with and without

      Withoutthe browser alone

      Vaðlaheiðarvegavinnuverkfærageymsluskúr

      Hraðbrautarframkvæmdir á landsbyggðinni

      With Skiptingarpage settings

      Vaðla­heiðar­vega­vinnu­verkfæra­geymslu­skúr

      Hrað­brautar­fram­kvæmdir á lands­byggðinni

      Card grid

      Narrow cards with long names. Without the package the names run out of the cards.

      Withoutthe browser alone
      • Heilbrigðisráðuneytið

        Heilbrigðisþjónusta um allt land.

      • Grunnskólakennarar

        Kennsla og skólastarf.

      • Náttúruverndarsvæði

        Friðlönd og þjóðgarðar.

      • Ferðaþjónustufyrirtæki

        Ferðir og afþreying.

      • Sveitarstjórnarkosningar

        Kosið var 16. maí 2026.

      • Hæstaréttarlögmaður

        Málflutningur fyrir dómstólum.

      With Skiptingarpage settings
      • Heil­brigðis­ráðu­neytið

        Heil­brigðis­þjón­usta um allt land.

      • Grunn­skóla­kenn­arar

        Kennsla og skóla­starf.

      • Nátt­úru­verndar­svæði

        Frið­lönd og þjóð­garðar.

      • Ferða­þjónustu­fyrir­tæki

        Ferðir og af­þrey­ing.

      • Sveitar­stjórnar­kosn­ingar

        Kosið var 16. maí 2026.

      • Hæsta­réttar­lög­maður

        Mál­flutn­ingur fyrir dóm­stólum.

      Mixed languages

      The two English phrases sit in <span lang="en">. The · marks show the result: the Icelandic words get breaks and „…“ quotes, the English ones are left as they are.

      Enska orðið internationalization og tilvitnunin "straight quotes" haldast óbreytt, en íslensku orðunum er skipt milli lína og „gæsalappirnar“ verða íslenskar.

      Sizes

      The first paragraph of your text at three sizes, in the same measure. Smaller type fits more letters on a line, so the breaks land in different places.

      text-display

      Kjör­sókn í sveitar­stjórnar­kosn­ing­unum 16. maí 2026 var sú mesta sem mælst hefur í Hrafna­fjarðar­byggð, 91,4%. Á ár­unum 1990–⁠2010 var hún að jafn­aði um 78%. „Þetta er sögu­leg niður­staða,“ sagði dr. Guð­rún Sig­urðar­dóttir, for­maður yfir­kjör­stjórnar, á blaða­manna­fundi kl. 14.30 dag­inn eftir.

      text-prose

      Kjör­sókn í sveitar­stjórnar­kosn­ing­unum 16. maí 2026 var sú mesta sem mælst hefur í Hrafna­fjarðar­byggð, 91,4%. Á ár­unum 1990–⁠2010 var hún að jafn­aði um 78%. „Þetta er sögu­leg niður­staða,“ sagði dr. Guð­rún Sig­urðar­dóttir, for­maður yfir­kjör­stjórnar, á blaða­manna­fundi kl. 14.30 dag­inn eftir.

      text-meta

      Kjör­sókn í sveitar­stjórnar­kosn­ing­unum 16. maí 2026 var sú mesta sem mælst hefur í Hrafna­fjarðar­byggð, 91,4%. Á ár­unum 1990–⁠2010 var hún að jafn­aði um 78%. „Þetta er sögu­leg niður­staða,“ sagði dr. Guð­rún Sig­urðar­dóttir, for­maður yfir­kjör­stjórnar, á blaða­manna­fundi kl. 14.30 dag­inn eftir.

      Same text, every browser

      Skiptingar determines where text may break. The browser determines whether it needs to.

      NoneBreaks only at spaces, so long words stick out or leave gaps.

      Kjörsókn í sveitarstjórnarkosningunum 16. maí 2026 var sú mesta sem mælst hefur í Hrafnafjarðarbyggð, 91,4%. Á árunum 1990-2010 var hún að jafnaði um 78%. "Þetta er söguleg niðurstaða," sagði dr. Guðrún Sigurðardóttir, formaður yfirkjörstjórnar, á blaðamannafundi kl. 14.30 daginn eftir.

      Browserhyphens: auto, with the browser’s own dictionary. Only Firefox has one for Icelandic, so in Chrome, Edge and Safari this column sets like None. Open the page in Firefox to see it hyphenate.

      Kjörsókn í sveitarstjórnarkosningunum 16. maí 2026 var sú mesta sem mælst hefur í Hrafnafjarðarbyggð, 91,4%. Á árunum 1990-2010 var hún að jafnaði um 78%. "Þetta er söguleg niðurstaða," sagði dr. Guðrún Sigurðardóttir, formaður yfirkjörstjórnar, á blaðamannafundi kl. 14.30 daginn eftir.

      SkiptingarSoft hyphens from the 2020 patterns, added on the server. Every browser gets the same places to break.

      Kjör­sókn í sveitar­stjórnar­kosn­ing­unum 16. maí 2026 var sú mesta sem mælst hefur í Hrafna­fjarðar­byggð, 91,4%. Á ár­unum 1990–⁠2010 var hún að jafn­aði um 78%. „Þetta er sögu­leg niður­staða,“ sagði dr. Guð­rún Sig­urðar­dóttir, for­maður yfir­kjör­stjórnar, á blaða­manna­fundi kl. 14.30 dag­inn eftir.

      How it works

      A word goes through patterns and rules, and comes out as HTML with soft hyphens in it. The browser sets the line.

      One word, from the text to the line
      1. 1Word

        On the server
        þjóðfélagsumræða

        Any Icelandic word. There is no dictionary to look it up in.

      2. 2Patterns

        On the server
        þ2j2ó2ð1fé1lags1u2m1ræða

        Each slot takes the highest digit of any pattern that covers it. Odd allows a break, even forbids one.

      3. 3Rules

        On the server
        þjóðfélagsumræða

        The typographic rules keep the breaks with room on both sides and drop the one before a linking syllable. The exception list marks a few words by hand.

      4. 4HTML

        On the server
        þjóð&shy;fé&shy;lags&shy;um&shy;ræða

        An invisible soft hyphen at each break. The page ships no code to put them there.

      5. 5Line

        In the browser

        Ný þjóð­fé­lags­um­ræða hafin

        The browser picks the break that fits, and draws the hyphen only there.

      1. 1

        Patterns

        This is Franklin Liang’s algorithm from 1983, the one TeX uses. There is no dictionary. 23.139 short letter patterns carry numbers between the letters, like .af4lið. (the dots mark the start and end of the word). An odd number allows a break, an even number forbids one, and the highest number at each spot wins. The patterns are the 2020 Icelandic list from the Árni Magnússon Institute (CC BY 4.0). It gets compound joints right: þjóð-fé-lags-um-ræða, where the older TeX patterns gave þjóð-fé-lagsum-ræða.

      2. 2

        Exceptions

        A hand-checked list in data/exceptions.txt (CC0) overrides the patterns for the words on it: a few they break wrongly, and compounds marked for their joints. A - marks a break and a = marks a compound joint. In heading mode a word breaks only at its joints, when one fits: listed ones, and two rules for the rest. A break before a linking syllable such as ar is dropped, so stjórnar-völd, not stjórn-ar-völd, and the break kept after it is a joint. So is a name ending such as -dóttir.

      3. 3

        Presets

        typographic is the default and keeps only the breaks that look good. ritreglur allows every break the patterns allow, close to what the official spelling rules allow, such as ó-lán, with 1 letter before and 2 after, in words of 4 or more letters (Skiptingar’s own limit). Typographic keeps only some of those breaks.

      4. 4

        Soft hyphens, on the server

        hyphenate() inserts a soft hyphen (U+00AD) at each allowed break while the page renders, in a React Server Component called <Hyphenate>. The browser gets plain HTML, so a page that only uses it ships 0 kB of hyphenation code, and the places to break are the same in every browser. The browser still picks which break to use on each line. CSS text-wrap: pretty and balance help it choose well.

      5. 5

        Typesetting

        typeset() only swaps one character for another. Spaces become no-break spaces in 1.000 kr., 30. september, bls. 12 and dr. Jón, and straight quotes become Icelandic „…“. Apart from putting the text in NFC it never changes its length, so it can run across a whole JSX tree at once and pair quotes across inline elements such as <strong>. One rule, lastWords, keeps the last line from being a single word. text-pretty does that better where the browser supports it, so use lastWords only as a fallback for Firefox and Safari before 26, which do not support text-pretty.

      6. 6

        Safety

        URLs, email addresses and domains are never touched. Running either function twice gives the same result. <CleanCopy /> removes the soft hyphens and no-break spaces from copied text. Text that only exists in the browser can use the lazy client entry, useHyphenate, 48.9 kB brotli, loaded on first use, or none at all when it asks your server.

      7. 7

        Languages, names and numbers

        <Hyphenate> leaves text inside it under a non-Icelandic lang alone, with no Icelandic hyphenation and no Icelandic quotes, and a nested lang="is" turns it back on; a page in another language passes its own lang prop. Input is turned into NFC first, so decomposed letters, like those in macOS file names, still hyphenate. All-caps words of 4 to 8 letters, such as UNESCO, never break. In heading mode a capitalised name breaks at its ending’s joint when one fits, as in Sigurðar-dóttir. Kennitala and phone numbers stay on one line, and CleanCopy puts the normal hyphen back on copy.

      Usage
      import { Hyphenate } from "skiptingar/react";
      
      <Hyphenate mode="heading">
        <h1>Sveitarstjórnarkosningar á landsbyggðinni</h1>
      </Hyphenate>

      Result

      The real output for the heading above. Each · is a soft hyphen.

      Sveitarstjórnarkosningar á landsbyggðinni

      CSS it pairs with

      Skiptingar only decides where a word may break. These properties decide how the browser uses those breaks. Each pair sets the same text at the same width, without and with the property. Drag the width: at some widths the two agree, at others they part.

      text-wrap: pretty

      Stops a paragraph from ending on one short word. Safari 26 and later also even out the ragged right edge; Chrome only adjusts the last few lines.

      Used here
      The paragraphs in Real interfaces, the steps on this page and the body text in Try it.
      Support
      Chrome 117+ and Safari 26+ support it. Firefox does not, and falls back to normal wrapping. The typeset rule lastWords does part of the same job, but only for the last two words, so use it as a fallback for Firefox and older Safari.
      Withouttext-wrap: wrap
      Withtext-wrap: pretty

      text-wrap: balance

      Evens out the line lengths of a short block, so a heading of two or three lines does not end on one word.

      Used here
      The section titles, the titles in Try it and the heading samples.
      Withouttext-wrap: wrap

      Nýr vegur opnaður á milli bæjanna

      Withtext-wrap: balance

      Nýr vegur opnaður á milli bæjanna

      hyphens: manual and auto

      manual, the CSS default, adds a hyphen only where there is a soft hyphen, and those are the ones Skiptingar puts in. auto asks the browser’s own dictionary. Only Firefox ships an Icelandic one; Chrome, Edge and Safari do not. Test it in Same text, every browser.

      Used here
      Every hyphenated text on this page uses manual. The Browser column in Same text, every browser uses auto on purpose.
      Withouthyphens: auto
      Withhyphens: manual, with Skiptingar

      lang

      Tells screen readers which language to speak and tells the browser which language rules to use. hyphens: auto needs it.

      Used here
      Every Icelandic container on this page. The English interface text has none.
      HTML
      <p lang="is">Hraðbrautarframkvæmdir</p>

      Install

      Three entry points: the JavaScript API, the React components and the client-side API.

      Not published yet. The name is reserved on npm at version 0.0.0, which holds no code. This is how installing will work.

      A first page

      Wrap the text in <Hyphenate> where the page renders on the server, and add <CleanCopy /> once, so text copied from the page has no soft hyphens in it.

      app/page.tsx
      import { Hyphenate } from "skiptingar/react";
      import { CleanCopy } from "skiptingar/client";
      
      export default function Page() {
        return (
          <main lang="is">
            <CleanCopy />
            <Hyphenate>
              <h1>Sveitarstjórnarkosningar á landsbyggðinni</h1>
              <p>Verð 1.000 kr. frá 30. september.</p>
            </Hyphenate>
          </main>
        );
      }

      Entry points

      Import only what the page needs. The first two run on the server and send nothing to the browser.

      • skiptingarAnywhere: Node, the edge, a build step

        hyphenate(), typeset() and processSegments(): plain functions on strings.

      • skiptingar/reactReact Server Components

        <Hyphenate> and <Typeset>, which change only the text in the JSX you give them.

      • skiptingar/clientThe browser

        useHyphenate() for text that only exists in the browser (it can ask your server instead of loading the patterns), and <CleanCopy />. The hyphenation core loads on first use, 48.9 kB brotli.

      No runtime dependencies. React 19 is needed only for skiptingar/react and skiptingar/client. MIT licence; the exception list is CC0; the hyphenation patterns are CC BY 4.0, so keep their credit.

      What it costs a browser

      What a page downloads for each job, with Skiptingar and with the common alternatives. Most of Skiptingar runs on the server and sends nothing. Text that only exists in the browser can be sent to your server to hyphenate, so the patterns never download; this page does that.

      Hyphenate Icelandic

      • Skiptingar on the serversoft hyphens in the HTMLHyphenated while the page renders.
        0 kB
      • Skiptingar via your serversoft hyphens from your serveruseHyphenate with an endpoint: the browser sends the text and gets it back hyphenated.
        4.6 kB
      • hyphen/issoft hyphens added in the browserThe old TeX patterns.
        12.9 kB
      • Hyphenopolysoft hyphens added in the browserThe old TeX patterns as WebAssembly, loaded where the browser cannot hyphenate.
        14.8 kB
      • Skiptingar in the browsersoft hyphens added in the browserThe 2020 data, loaded on first use, for a page with no server to ask. Larger than the old patterns because it breaks better.
        53.5 kB

      Typesetting rules

      • Skiptingar on the servercharacters swapped in the HTMLIcelandic numbers, dates, abbreviations and quotes.
        0 kB
      • Typeset.jsrewrites the markupEnglish rules, run in the browser here.
        29.7 kB

      Measured on 1 October 2026: each package bundled with a minimal use, minified, React left out, brotli. Each row is what that setup downloads for its job alone, so the scope differs: some sizes include hyphenation, some leave it to the server.

      Planned

      What comes before the first release and what can wait. Nothing here is promised yet.

      Beta and v1

      • On npm

        The three entry points as one ESM package with its types, no runtime dependencies and a changelog.

      • Report a wrong break

        A prefilled GitHub issue from the break editor that holds the line to add to the exception list, and the list public, so anyone can see what has been fixed. Until a fix ships, the dictionary option takes your own words.

      • Fix the remaining bad breaks

        The linking-syllable rule fixed stjórnar-völd and fornaldar-frægð. Next are the words where the patterns disagree with the word list they were made from.

      • This page as the documentation

        Every option shown live, with the API reference beside it.

      Later

      • Markdown and HTML

        A rehype plugin and a small CLI that hyphenate and typeset, for sites that are not built with React.

      • Smaller patterns, maybe

        Train a smaller pattern set from the same 218.000-word list, trading a little accuracy for size, for pages that must hyphenate in the browser without a server. Only if the size turns out to matter.

      Reference

      Pattern sources, licences, browser support, bundle sizes and methodology.

      Scroll the table sideways for the 2020 column.

      TeX patterns vs 2020 patterns
      WordTeX hyphen/is2020 Árni Magnússon
      þjóðfélagsumræðaþjóð-fé-lagsum-ræðaþjóð-fé-lags-um-ræða
      hraðbrautarframkvæmdirhrað-brautar-fram-kvæmd-irhrað-braut-ar-fram-kvæmd-ir
      ólánólánó-lán
      íþróttafélagiðíþrótta-fé-lag-iðí-þrótta-fé-lag-ið
      óhjákvæmilegtóhjá-kvæmi-legtó-hjá-kvæmi-legt
      VaðlaheiðarvegavinnuverkfærageymsluskúrVaðla-heið-ar-vega-vinnu-verk-færa-geymslu-skúr(same)

      TeX here uses its usual limit of 2 letters before a break, the 2020 data its own limit of 1, so ó-lán and í-þrótta show only in the 2020 column. The joint in þjóðfélags-umræða is the 2020 data’s own fix. The typographic preset drops one-letter breaks.

      • What makes a ragged edge look good: no short last line, an even right edge, hyphens where they help. It shows how Safari weighs these, with a live demo that draws the plain text faintly behind the improved one.

      • CSS text-wrap: prettyChrome for Developers

        Chrome’s take on the same property. It keeps a paragraph from ending on one word, and near the end it adjusts hyphenation and earlier lines to make room. That is why its effect shows at some widths and not at others.

      • CSS text-wrap: balanceChrome for Developers

        When to balance a title, and the catch: browsers only balance blocks of a few lines, so it is for titles and captions, not paragraphs.

      • HyphenationButterick’s Practical Typography

        A counterpoint worth reading: in ragged text hyphenation is optional, and headings are better without it. The typographic rules and heading mode take the same view, breaking less often, and in a title only long words.

      • The thesis behind the patterns Skiptingar runs, and the reason it needs no dictionary.

      • § 33 OrðskiptingRitreglur, Árnastofnun

        The official rules for breaking Icelandic words between lines. The Ritreglur preset follows them through the patterns, which miss a few breaks and allow a few they forbid; the typographic preset is stricter.

      • Hangs an opening „ outside the text’s edge, so a line that starts with a quote still lines up. Few browsers support it, and the rest ignore it, so it is safe to add.

      • TypesetDavid Merfield

        A server-side HTML pre-processor for hanging punctuation, optical margin alignment and small caps. It has its own quotes and hyphenation: turn off quotes and hyphenate and let Skiptingar do those for Icelandic.

      • HyphenopolyMathias Nater

        Hyphenation for many languages, in the browser or Node. It has Icelandic too, from the older TeX patterns. Skiptingar leaves text under another lang alone, so the two can share a page.

      • A neural model that finds compound joints. A second opinion when you check a break before adding it to the exception list.

      • Spelling and grammar checking for Icelandic, in Python. Correct the text first, then set it.

      Icelandic on the platform

      Some things the browser does for Icelandic and some it does not. These notes say what to use instead of writing it yourself.

      • Dates and numbers

        Chrome and Edge on the desktop ship no Icelandic Intl data. Tested in Chrome 154 on macOS: dates render in English, and Intl.Collator("is") sorts æ next to a and ö with o, and á, é and í as plain a, e and i. Node, Bun, Firefox and Safari are fine. Format dates and numbers on the server, and for sorting in the browser use cldr-is (on GitHub, not on npm yet).

      • Plurals

        Intl.PluralRules("is") works everywhere. It treats 21, 31 and 101 as singular, as Icelandic does.

      • Slugs

        slugify (the npm package) already maps þ to th, ð to d, æ to ae and ö to o, the ÍST 130 table.

      • Names in a sentence

        Forms like til Jóns and Jóni need declension. Use beygla.

      • Kennitala

        Format it, but do not validate the check digit. Þjóðskrá stopped using it for new numbers on 18 February 2026. See kennitölur án vartölu.

      • Phone numbers

        555-1234 and 555 1234 are kept together by typeset(). Browsers otherwise break after the hyphen.