---
title: "Underline extension"
description: "Add a line below your text to make it look more… underlined with the Tiptap’s… Underline extension. More in the docs!"
canonical_url: "https://tiptap.dev/docs/editor/extensions/marks/underline"
---

# Underline extension

Add a line below your text to make it look more… underlined with the Tiptap’s… Underline extension. More in the docs!

Use this extension to render text underlined. If you pass `<u>` tags, or text with inline `style` attributes setting `text-decoration: underline` in the editor’s initial content, they all will be rendered accordingly.

Be aware that underlined text in the internet usually indicates that it’s a clickable link. Don’t confuse your users with underlined text.

> **Restrictions:**
>
> The extension will generate the corresponding `<u>` HTML tags when reading contents of the `Editor` instance. All text marked underlined, regardless of the method will be normalized to `<u>` HTML tags.

> **Interactive demo:** [Underline](https://embed.tiptap.dev/preview/Marks/Underline)

## Install

```bash
npm install @tiptap/extension-underline
```

## Settings

### HTMLAttributes

Custom HTML attributes that should be added to the rendered HTML tag.

```js
Underline.configure({
  HTMLAttributes: {
    class: 'my-custom-class',
  },
})
```

## Commands

### setUnderline()

Marks a text as underlined.

```js
editor.commands.setUnderline()
```

### toggleUnderline()

Toggles an underline mark.

```js
editor.commands.toggleUnderline()
```

### unsetUnderline()

Removes an underline mark.

```js
editor.commands.unsetUnderline()
```

## Keyboard shortcuts

| Command           | Windows/Linux | macOS   |
| ----------------- | ------------- | ------- |
| toggleUnderline() | Control + U   | Cmd + U |

## Source code

[packages/extension-underline/](https://github.com/ueberdosis/tiptap/blob/main/packages/extension-underline/)
