Please check the Cloudflare KV bindings, the KV environment variable name should be all uppercase letters.
Please check if NUXT_SITE_TOKEN is set to pure numbers, Sink does not support pure number Tokens, we consider this to be unsafe.
Analytics data requires access to Cloudflare’s settings:
- Verify
NUXT_CF_ACCOUNT_IDandNUXT_CF_API_TOKENare configured correctly (ensure the Account ID matches the deployment zone ID). - Check that the Worker analytics engine is enabled.
Of course. Please set the environment variable NUXT_HOME_URL to your blog or official website address.
NuxtHub's ANALYTICS points to its dataset, you need to set the NUXT_DATASET environment variable to point to the same dataset.
This is a feature of Sink. By default, we automatically convert all links to lowercase to avoid case-sensitive issues and improve usability. This ensures users don’t encounter errors due to accidental capitalization differences.
However, you can disable this feature by setting the NUXT_CASE_SENSITIVE environment variable to true.
Newly generated links will be case-sensitive, treating MyLink and mylink as distinct. Randomly generated slugs will include both uppercase and lowercase characters, offering a larger pool of unique combinations (but not user-friendly that why we default to non-case-sensitive).
To improve query performance, we have limited the amount of data. If you need to query more data, you can adjust it through NUXT_LIST_QUERY_LIMIT.
Set NUXT_DISABLE_BOT_ACCESS_LOG to true.
Link cloaking masks your destination URL by showing your short link domain in the browser address bar instead of redirecting to the target URL. The destination page loads inside a full-screen iframe.
Toggle Enable Link Cloaking in the Link Settings section when creating or editing a link.
- Sites that block iframes: Websites with
X-Frame-Options: DENYorContent-Security-Policy: frame-ancestors 'none'will not load inside the iframe. Most major sites (Google, GitHub, Twitter, etc.) block iframe embedding. - HTTPS required: The destination URL must use HTTPS. Mixed content (HTTPS short link → HTTP destination) will be blocked by browsers.
- Limited interaction: Some features like OAuth login flows,
window.topnavigation, and certain payment forms may not work correctly inside the iframe. - Device redirects take priority: If both cloaking and device redirects (iOS/Android) are configured, device redirects will take precedence on matching devices.
If you control the destination site, you can whitelist your short link domain by adding this response header:
Content-Security-Policy: frame-ancestors 'self' your-short-domain.com
When enabled, query parameters from the short link URL are appended to the destination URL. For example, visiting https://s.ink/my-link?ref=twitter would redirect to https://example.com/page?ref=twitter.
- Global setting: Set
NUXT_REDIRECT_WITH_QUERY=trueto enable for all links by default. - Per-link override: Toggle Redirect with Query Parameters in the Link Settings section when creating or editing a link. This overrides the global setting for that specific link.
If a link has no per-link setting, it falls back to the global configuration.
Import and Export are designed to work within Cloudflare Workers' KV operation limits (50 per request by default).
- Export: Downloads links in batches, automatically paginating until complete.
- Import: Uploads links in batches (half of
NUXT_PUBLIC_KV_BATCH_LIMIT, default 25) since each link requires 2 KV operations (check existence + write). - Expired links: Imported as-is to support migration scenarios.
- Duplicate slugs: Skipped during import (existing links are preserved).
- Validation: All links are validated against the schema before import starts.

