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

# lowdown\_term\_new(3)

allocate a Markdown terminal renderer

## NAME

**lowdown\_term\_new** – allocate a Markdown terminal renderer

## LIBRARY

library “liblowdown”

## SYNOPSIS

**#include \<sys/queue.h\>**

**#include \<stdio.h\>**

**#include \<lowdown.h\>**

*void* *\**\

**lowdown\_term\_new**(*const struct lowdown\_opts \*opts*);

## DESCRIPTION

Allocates a terminal renderer using variables in the *struct lowdown\_opts\_term* structure. Its fields are documented in [lowdown(3)](/lowdown/3.md). The returned pointer may be used with multiple invocations of [lowdown\_term\_rndr(3)](/lowdown_term_rndr/3.md) and must be freed with [lowdown\_term\_free(3)](/lowdown_term_free/3.md).

The bits recognised in *opts-\>oflags* are LOWDOWN\_NOLINK, LOWDOWN\_NORELLINK, LOWDOWN\_SHORTLINK, LOWDOWN\_TERM\_SHORTLINK, LOWDOWN\_TERM\_NOANSI, LOWDOWN\_TERM\_NOCOLOUR, LOWDOWN\_TERM\_NOLINK, LOWDOWN\_TERM\_NOSTYLE, and LOWDOWN\_TERM\_NOTABLEWRAP.

## RETURN VALUES

Returns a pointer to the renderer or NULL on memory failure. The returned pointer must be freed with [lowdown\_term\_free(3)](/lowdown_term_free/3.md).

## EXAMPLES

The following parses *b* of length *bsz* and outputs in ANSI terminal format.

```
struct lowdown_buf *out;
struct lowdown_doc *doc;
struct lowdown_node *n;
void *rndr;
if (setlocale(LC_CTYPE, "en_US.UTF-8") == NULL)
	err(1, NULL);
if ((doc = lowdown_doc_new(NULL)) == NULL)
	err(1, NULL);
if ((n = lowdown_doc_parse(doc, NULL, b, bsz, NULL)) == NULL)
	err(1, NULL);
if ((out = lowdown_buf_new(256)) == NULL)
	err(1, NULL);
if ((rndr = lowdown_term_new(NULL)) == NULL)
	err(1, NULL);
if (!lowdown_term_rndr(out, rndr, n))
	err(1, NULL);
fwrite(out->data, 1, out->size, stdout);
lowdown_term_free(rndr);
lowdown_buf_free(out);
lowdown_node_free(n);
lowdown_doc_free(doc);
```

## SEE ALSO

[lowdown(3)](/lowdown/3.md), [lowdown\_term\_free(3)](/lowdown_term_free/3.md), [lowdown\_term\_rndr(3)](/lowdown_term_rndr/3.md)

## STANDARDS

ANSI escape codes are described in ISO/IEC 6429, previously ECMA-48.

Hyperlinks are formatted as defined by OSC (Operating System Command) link sequences, which will be ignored for ECMA-48 terminals not configured to display links.
