Query parameters

RTEdge.net reads a few query parameters on deployed URLs: social-preview overrides, a content-type override, a switch that returns only the generated head tags, and the filters of the * index. This page lists them as checked on 2026-10-04. The root page of a route is the page served at the route, such as / or /docs/. Parameters that belong to a suffix are described with it. The RTEdge.net router answers the parameters on this page for a deployed route, and platform handlers answer the parameters of suffixes.

Social preview

Experimental These parameters override the generated social tags of the root page for one link. They do not apply to files or worker responses. A tag that your page authors in its first 8,192 characters wins, and the override for it is ignored.

ParameterEffectNotes
og:title, o:tReplaces the title.og:title takes precedence over o:t. A double quote in the title becomes an apostrophe.
og:image, o:iReplaces the image.og:image takes precedence over o:i. The value is used as given, and og:image:width and og:image:height stay 1200 and 630.
og:description, o:dReplaces the description.og:description takes precedence over o:d. The value is used as given.
o:i:darkRenders the default screenshot in forced dark mode.It takes any value, or none. It has no effect when og:image or o:i is given.

Without overrides, the page gets og:title "𝗥𝗧𝗘𝗱𝗴𝗲.𝗻𝗲𝘁 🌐 ← ⚡ RTCode.io", an og:description and description that hold the playground Title or else the hostname, and an og:image that is the deploy screenshot. Keep double quotes out of image and description values. See Social previews and screenshots.

plain
https://name.rt.ht/?o:t=Launch%20week&o:d=Try%20the%20new%20editor&o:i:dark

The tags and the overrides are produced after the edge:user check, so a visitor who is not permitted gets the 401 or 403 page and no preview.

Content type

Experimental A query that names a known file extension serves the root page with that content type. The override applies to the root page of a route only. Exported files keep their own type (/nav.js?txt stays text/javascript), and so do worker responses. It needs a non-empty query that none of ?, ?io, ?sync, ?? and ?m=uo handled first.

ParameterEffect
?<ext>Serves the root page with the content type of the extension, for example ?txt.

RTEdge.net reads the raw query, without the ?, as a file name. It keeps the part after the last / or \, then the part after the last ., in lower case. The query matches when that part is a known extension and either the query has no / or \, or its last segment has a . after its first character. ?txt, ?.txt and ?a/b.txt match, while ?a/txt keeps the default text/html;charset=utf-8. An override adds no charset.

QueryContent-Type of the root page
?txt, ?TXT, ?x.txt, ?a/b.txttext/plain
?jsonapplication/json
?svgimage/svg+xml
?mdtext/markdown
?js, ?mjsapplication/javascript
?wasmapplication/wasm
?pdfapplication/pdf
?xmlapplication/xml
?csstext/css
?htmltext/html, with no charset
?pngimage/png
?foo=barUnchanged.

The body, Access-Control-Allow-Origin: *, Cache-Control: no-store and the other headers do not change. The main use is reading the served HTML, with its generated tags, as text: https://name.rt.ht/?txt.

Warning: The lookup reads the end of the whole query, so a query whose last value ends like a file name changes the content type: ?o:i=https://example.com/a.png serves the page as image/png, and ?o:t=Version%201.5.mp3 as audio/mpeg. Put a parameter without an extension last, such as &_, to keep text/html;charset=utf-8.

Generated tags only

Experimental A parameter ogo with an empty value returns only the doctype comment and the generated social tags, without the page. ?ogo=1 returns the full page. The content type follows the ?<ext> rule: ?ogo gives text/html;charset=utf-8, and ?ogo&.txt gives text/plain.

ParameterEffect
?ogo, ?ogo=Returns only the generated tags. On new.rt.ht that is 464 bytes.
plain
https://new.rt.ht/?ogo&o:i:dark&o:t=Launch%20week

Use it to check what a crawler will read, together with the preview overrides above.

Source, versions and ownership

ParameterEffectPage
?Opens the deployed source in RTCode.io.?
?io, ?sync ExperimentalThe same, for any path of the route.?
??Opens the versions of the route.??
?m=uo ExperimentalAnswers true, false or null as text, for the signed-in visitor.::meta ::owner

Index filters

These parameters filter and page the * index.

ParameterEffect
editor, eKeeps the routes whose editors match. - keeps routes without editors.
saver, sKeeps the routes whose saver matches. - keeps routes without a saver.
NThe page size, up to 1,000. The default is 1,000.
cursorThe cursor of the next page.

Parameters of suffixes

SuffixParametersPage
::qr Experimentalt, s, m, fg, bg, ec::qr
::kv Experimentalscope, key, raw, json, N, cursor::kv
::clear ExperimentalQuoted directives, or keep- followed by directives::clear
?::/h: Experimental::/h:<Header-Name>=<value> and ::/h:-=<name>?::/h:

Notes

Root pages only

The social preview parameters, ?<ext> and ?ogo apply to the root page of a route, such as / or /docs/. Files and worker responses are not changed.

Authored tags win

When the first 8,192 characters of the deployed HTML contain a <meta> for og:title, og:image, og:description, description or a twitter:* tag, RTEdge.net leaves out that generated tag and its query override. An authored og:image also suppresses twitter:image, an authored og:title suppresses twitter:title, and an authored og:description suppresses twitter:description.

Crawlers

Crawlers whose user agent starts with Twitter or Xbot also receive twitter:* tags. Crawlers whose user agent starts with LinkedIn receive the generated tags wrapped in <head>.

Header overrides reshape the query

A ::/h: header override re-serializes the rest of the query, so combining it with ?<ext> loses the extension override. See ?::/h:.

See also