---
title: renderToStaticMarkup
---
`renderToStaticMarkup` renders a non-interactive React tree to an HTML string.
```js
const html = renderToStaticMarkup(reactNode, options?)
```
---
## Reference {/*reference*/}
### `renderToStaticMarkup(reactNode, options?)` {/*rendertostaticmarkup*/}
On the server, call `renderToStaticMarkup` to render your app to HTML.
```js
import { renderToStaticMarkup } from 'react-dom/server';
const html = renderToStaticMarkup();
```
It will produce non-interactive HTML output of your React components.
[See more examples below.](#usage)
#### Parameters {/*parameters*/}
* `reactNode`: A React node you want to render to HTML. For example, a JSX node like ``.
* **optional** `options`: An object for server render.
* **optional** `identifierPrefix`: A string prefix React uses for IDs generated by [`useId`.](/reference/react/useId) Useful to avoid conflicts when using multiple roots on the same page.
#### Returns {/*returns*/}
An HTML string.
#### Caveats {/*caveats*/}
* `renderToStaticMarkup` output cannot be hydrated.
* `renderToStaticMarkup` has limited Suspense support. If a component suspends, `renderToStaticMarkup` immediately sends its fallback as HTML.
* `renderToStaticMarkup` works in the browser, but using it in the client code is not recommended. If you need to render a component to HTML in the browser, [get the HTML by rendering it into a DOM node.](/reference/react-dom/server/renderToString#removing-rendertostring-from-the-client-code)
---
## Usage {/*usage*/}
### Rendering a non-interactive React tree as HTML to a string {/*rendering-a-non-interactive-react-tree-as-html-to-a-string*/}
Call `renderToStaticMarkup` to render your app to an HTML string which you can send with your server response:
```js {5-6}
import { renderToStaticMarkup } from 'react-dom/server';
// The route handler syntax depends on your backend framework
app.use('/', (request, response) => {
const html = renderToStaticMarkup();
response.send(html);
});
```
This will produce the initial non-interactive HTML output of your React components.
This method renders **non-interactive HTML that cannot be hydrated.** This is useful if you want to use React as a simple static page generator, or if you're rendering completely static content like emails.
Interactive apps should use [`renderToString`](/reference/react-dom/server/renderToString) on the server and [`hydrateRoot`](/reference/react-dom/client/hydrateRoot) on the client.
---
## Sitemap
[Overview of all docs pages](/llms.txt)