---
name: "aha"
section: "1"
platform: "linux"
package: "aha"
version: "0.5.1-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/aha"
---

# aha(1)

Convert ANSI escape sequences to HTML

## NAME

**aha** – Convert ANSI escape sequences to HTML

## SYNOPSIS

**aha** \[**-bhlnprsvwx**\] \[**-c** *file*\] \[**-f** *file*\] \[**-i** *X*\] \[**-L** *LANG*\] \[**-t** *TITLE*\] \[**-y** *STYLE*\]

## DESCRIPTION

**aha** reads ECMA-48 SGR-colored text from the standard input, converts it to colored HTML and writes it to the standard output. The options are as follows:

- **-b**, **-****-black**

  Style HTML output to use a black background with white text.

- **-c** *file*, **-****-css** *file*

  Adds the given css *file* to the output. In fact just adds \<link rel="stylesheet" href=" *file* " /\> to the header.

- **-f** *file*

  Read from *file* instead of from the standard input.

- **-h**, **-****-help**, **-?**

  Print help for **aha** to the standard output.

- **-i** *X*, **-****-iso** *X*

  Use the *ISO-8859-**X* character encoding instead of UTF-8 for the output, where *X* is a number from 1-16.

- **-l**, **-****-line-fix**

  Use a fix for inputs using control sequences to change the cursor position. This is a hot fix, thus it may not work with every program.

- **-L** *LANG*, **-****-lang** *LANG*

  Uses the*ISO-639-1*\
    code *LANG* for the language.

- **-n**, **-****-no-header**

  Do not enclose HTML output in *\<html\>*, *\<head\>* and *\<body\>* tags.

- **-p**, **-****-pink**

  Style HTML output to use a pink background.

- **-r**, **-****-ignore-cr**

  Ignore all carriage-returns (ASCII sign 13, \\r) which may lead to double new lines in html.

- **-s**, **-****-stylesheet**

  Use a stylesheet instead of inline styles.

- **-t** *TITLE*, **-****-title** *TITLE*

  Set the HTML document title to *TITLE* instead of "stdin" or the filename.

- **-v**, **-****-version**

  Print version number of **aha** to the standard output and exit.

- **-w**, **-****-word-wrap**

  Wrap long lines in the html output. Works with CSS3 supporting browsers and many older ones.

- **-x**, **-****-no-xml**

  Don't use doctype xml but html (may useful for old browsers like IE)

- **-y** *STYLE*, **-****-style** *STYLE*

  Sets the style used in the *\<body\>* element to *STYLE* after styles set by other parameters.

## EXAMPLES

Create an HTML file with a black background, a custom title and a larger font-size using **aha**'s help:

```
$ aha -h | aha -b -t 'the awesome aha help' -y 'font-size:1.875em' > aha-help.html
```

Create an HTML file with a white background using the output of [diff(1)](/diff/1.md):

```
$ diff -u --color=always oldfile.c newfile.c | aha > diff.html
```

Create an HTML file with a black background from the output of [htop(1)](/htop/1.md). You have to use option **-l** due the other new-line-commands htop uses:

```
$ echo q | htop | aha -b -l > htop.html
```

Create an HTML file from the output of this man page. [man(1)](/man/1.md) uses bold and underline formatting from [nroff(1)](/nroff/1.md), which [ul(1)](/ul/1.md) converts to SGR:

```
$ MAN_KEEP_FORMATTING=1 COLUMNS=80 man aha | ul | aha > man-aha.html
```

## SEE ALSO

[console\_codes(4)](/console_codes/4.md) *Control Functions for Coded Character Sets*, ECMA-48, Ecma, 61, 1991.

## AUTHORS

The **aha** utility is maintained by Alexander Matthes ‘Ziz’ ⟨*ziz@mailbox.org*⟩.

## BUGS

Blinking text using the HTML tag *\<blink\>* and the css property *text-decoration:blink* have been deprecated on modern browsers, thus requiring the use of option **-s** and redefining the *.blink* css class.
