As with the other short-video platforms, Douyin stores picture and sound separately, so a video track on its own is silent. The other thing worth knowing up front: private posts, friends-only posts and live streams cannot be reached at all.
The whole share message can be pasted
Douyin's share output carries a caption, hashtags and a v.douyin.com short link. The input takes the first link out of the text, so there is nothing to tidy up first — and trimming it by hand is the step most likely to break the address.
- douyin.com/video/{id} — the canonical video address
- v.douyin.com/{code} — the short form from the share sheet
- Paste the paragraph as it is; the link is extracted for you
Why a Douyin download comes back silent
Douyin serves picture and sound as separate streams, so a video-only track contains no audio. It is the same rule as YouTube or TikTok: select one track from each list and merge them into a single MP4.
- Selecting the video track alone is always silent — by design, not by fault
- Merging needs a desktop browser and cannot be done on a phone
- You get the version the platform served: no watermark removal, no re-encoding
What cannot be reached
Parsing happens as an anonymous visitor, so anything that needs an identity cannot be read. That is a limit of the source rather than a temporary fault, and retrying will not change it.
- Private posts and friends-only posts cannot be parsed
- A live stream usually has no finished file to download yet
- Deleted, restricted or region-locked posts return nothing
Reference
These tables are shared across the site, so a figure you saw on one page is the figure you see here.
| Address shape | Resolves | Why |
|---|---|---|
| instagram.com/reel/{id} | Yes | A Reel or a post carries exactly one piece of media. A profile does not. |
| facebook.com/watch/?v={id} | Yes | Watch videos, Reels and page videos all resolve; the audience setting still has the final say. |
| reddit.com/r/{sub}/comments/{id}/… | Yes | The permalink under the post is what carries the media, and v.redd.it serves it as two streams. |
| pinterest.com/pin/{id} | Yes | A Pin resolves to a video, to a still image, or to a link onwards that has no media of its own. |
| threads.com/@{user}/post/{id} | Yes | One post, one video. Both the current and the older hostname work. |
| xiaohongshu.com/explore/{id} | Yes | A note resolves, and the short form the app shares redirects to it. |
| douyin.com/video/{id} | Yes | The share message contains the link, and the whole message can be pasted. |
| youtube.com/watch?v={id} | Yes | A watch address resolves; a channel page or a search result has no single video. |
| tiktok.com/@{user}/video/{id} | Yes | A video address resolves; a profile does not. |
| bilibili.com/video/BV… | Yes | A BV address resolves; a space page does not. |
| x.com/{user}/status/{id} | Yes | A status address resolves; a profile timeline does not. |
| /{user} · /profile · /search | No | Profiles, boards, channels, search results and home feeds have no single piece of media behind them. |
Which links work best
- douyin.com/video/{id}
- v.douyin.com/{code}
Those are the shapes worth pasting. SniffVid accepts any other public http(s) link too — whether it resolves is up to the source, so a profile, a search page or a private post simply comes back empty.
Background and edge cases
What the share sheet actually puts on your clipboard
The share action produces a caption, hashtags and a v.douyin.com short link in one string. The input takes the first address it finds rather than asking you to extract it, which is why pasting the whole thing is the reliable route and trimming it is the risky one.
- A short link redirects to the canonical video address, so both work
- Editing the message by hand can break an address that was intact
- A link copied from a repost can point at the original rather than at what you were watching
Live streams and unfinished posts
A stream that is still running has no finished file to fetch, and a post that was just published may not have finished processing. Both look like failures and neither is one: waiting, then parsing again, is the whole of the remedy.
- A live broadcast returns nothing while it is live
- A brand-new post can resolve a moment later
- A deleted or restricted post will not start resolving, however long you wait