# Hyperlinks !> Hyperlinks require an understanding of [Paragraphs](usage/paragraph.md) and [Text](usage/text.md). There are two types of hyperlinks: internal (pointing to a bookmark inside the document) and external (pointing to an external url). ## Internal To create an internal hyperlink you need first to create a `Bookmark`, which contains the content that will be the destination of the hyperlink. A bookmark is composed of an anchor (an identifier) and the text displayed. After creating a bookmark just add it to a paragraph. For example, creating a bookmarked heading: ```ts const chapter1 = new Paragraph({ heading: HeadingLevel.HEADING_1, children: [ new Bookmark({ id: "anchorForChapter1", children: [new TextRun("Chapter 1")], }), ], }); ``` Then you can create an hyperlink pointing to that bookmark with an `InternalHyperLink`: ```ts const link = new InternalHyperlink({ children: [ new TextRun({ text: "See Chapter 1", style: "Hyperlink", }), ], anchor: "anchorForChapter1", }); ``` ### Page reference You can also get the page number of the bookmark by creating a page reference to it: ```ts const paragraph = new Paragraph({ children: [new TextRun("Chapter 1 can be seen on page "), new PageReference("anchorForChapter1")], }); ``` ### Numbered item reference You can also create cross references for numbered items with `NumberedItemReference`. ```ts const paragraph = new Paragraph({ children: [new TextRun("See Paragraph "), new NumberedItemReference("anchorForParagraph1", "1.1")], }); ``` > [!NOTE] > The `NumberedItemReference` currently needs a cached value (in this case `1.1`) ## External To create an external hyperlink you just need to specify the url and the text of the link, then add it to a paragraph: ```ts const paragraph = new Paragraph({ children: [ new ExternalHyperlink({ children: [ new TextRun({ text: "This is an external link!", style: "Hyperlink", }), ], link: "https://docx.js.org", }), ], }); ``` ## Styling hyperlinks It is possible to set the style of the text of both internal and external hyperlinks. This can be done applying run formatting on any of the `TextRun` children of the hyperlink. Use the `style: "Hyperlink"` property to show the default link styles, which can be combined with any other style. Example: ```ts const styledLink = new ExternalHyperlink({ children: [ new TextRun({ text: "This is a ", style: "Hyperlink", }), new TextRun({ text: "bold", bold: true, style: "Hyperlink", }), new TextRun({ text: " link!", style: "Hyperlink", }), ], link: "https://docx.js.org", }); ```