I'm a solo developer from Bangladesh, and this year I built SSTIK, a free web tool that saves public TikTok, Instagram, Facebook and X videos (HD, no TikTok watermark, MP3 for sounds). It now has a website in 15 languages, an Android app and a Telegram bot.
Building the downloader was the fun part. Getting people to find it was harder. Here are the things that actually mattered.
The stack, briefly
- Website: static HTML pages (one per platform and language) plus a small JavaScript file, hosted on Vercel.
- APIs: a Node service and a Python service that read the public post and return the available video and audio files.
- Data: MongoDB for anonymous usage stats and settings.
- Android app: plain Java, small, with share-to-download, a player and a few video tools.
Nothing fancy. Static pages load fast and are easy for search engines to read, which turned out to matter more than anything else.
Lesson 1: a title change can cost you most of your traffic overnight
Almost all of my Google traffic came from people searching the brand name, "sstik". In one big redesign I changed the home page title from
SSTIK - Video Downloader | ...
to a keyword-first title that put the brand at the very end.
The next day my average position for "sstik" went from about 4 to about 30, and impressions fell from ~2,000 a day to ~100. Search Console showed the exact day.
If most of your clicks are navigational (people looking for you), keep the brand at the start of the title. I've moved it back to SSTIK - TikTok Downloader No Watermark + Instagram, FB & X.
Lesson 2: redirect every old URL
The same redesign renamed pages like /facebook-downloader to /facebook-video-downloader and simply deleted the old ones. They returned 404. On Vercel the fix is a few lines in vercel.json:
{ "source": "/facebook-downloader", "destination": "/facebook-video-downloader", "permanent": true }
I also had www.sstik.top serving the full site instead of redirecting, so Google split clicks between two hosts. A host-based redirect fixed that:
{
"source": "/:path*",
"has": [{ "type": "host", "value": "www.sstik.top" }],
"destination": "https://sstik.top/:path*",
"permanent": true
}
Lesson 3: 65 pages in the sitemap does not mean 65 pages in Google
Search Console said: 6 indexed, 57 "Discovered, currently not indexed". Translating every page into 14 languages made the site bigger, not more valuable. Google knew the pages existed and simply didn't bother crawling them yet.
What I'm doing instead:
- Writing genuinely useful guides (for example TikTok to MP3 and saving videos to iPhone Photos) in the two languages where I actually get impressions, English and Bengali.
- Linking to them from inside the relevant sections of the main pages, not only from the footer.
- Adding
HowTo,FAQPageandBreadcrumbListstructured data.
Lesson 4: automate the sitemap so you never forget it
I kept forgetting to update lastmod in sitemap.xml. Now a GitHub Action does it on every push: a short Python script rebuilds the sitemap from the HTML files, uses the last git commit date of each file as lastmod, commits it if anything changed, and sends only the changed URLs to IndexNow so Bing and others recrawl them quickly.
The core of it:
def git_date(path):
out = subprocess.run(['git', 'log', '-1', '--format=%cs', '--', path],
capture_output=True, text=True).stdout.strip()
return out or None
Remember fetch-depth: 0 in actions/checkout, otherwise every file gets today's date.
What's next
More guides, a few honest directory listings, and patience while Google re-crawls. If you've recovered from a similar ranking drop, I'd love to hear what worked for you in the comments.
SSTIK only works with public posts and doesn't store videos. Please download only your own videos or ones you have permission to use.
Top comments (0)