DEV Community

Cover image for I Brought the ‘ssyoutube’ Trick to ChatGPT
Artem Martirosyan
Artem Martirosyan

Posted on

I Brought the ‘ssyoutube’ Trick to ChatGPT

Remember the old ssyoutube trick? That magical moment when you could just tweak a YouTube URL to instantly download a video? I’ve always loved how simple that was. So I decided to bring the same spirit to ChatGPT.

The result: pdfChatGPT — a tiny web app that solved a frustration that kept bugging me.


🛠️ The Problem

ChatGPT is fantastic, but it lacks a built-in "Export to PDF" button. We’re stuck with two not-great options:

  1. Copy-pasting: Ruins all formatting. Code blocks become a mess, tables break, images disappear.
  2. Screenshots: Need to stitch together endless images; text isn’t searchable.

It’s a nightmare, especially for long or technical threads.


⚡ The “Just Change the URL” Solution

Inspired by ssyoutube, I wanted a solution that felt like a magic trick.

Take your ChatGPT share link:

https://chatgpt.com/share/abc123...

Just add pdf to the domain:

https://pdfchatgpt.com/share/abc123...

That’s it! The download for a perfectly formatted PDF (or Markdown) starts instantly.


The tool makes sure everything comes out looking sharp:

  • ✅ Emojis and all text formatting are retained
  • ✅ Code blocks keep their syntax highlighting
  • ✅ Images are perfectly embedded
  • ✅ Complex tables are clean and optimized (even wide ones!)
  • ✅ The PDF has seamless page breaks, so nothing is cut awkwardly

💡 How I Built It (The Fun Part)

Of course, it wasn’t that simple under the hood. Here are a few hurdles I had to clear:

  • Broken Emojis: Standard PDF renderers often choke on emojis. I fixed this by embedding a full emoji-supporting font (like Noto Color Emoji) and enforcing UTF-8 everywhere.
  • Syntax Highlighting: This wasn’t preserved by default. I inject Highlight.js and a custom CSS theme into the headless browser before printing to PDF.
  • Disappearing Images: ChatGPT loads images asynchronously, so my backend waits, fetches, converts them to base64, and embeds them into the HTML before Puppeteer “prints” the page.
  • Mangled Tables: Long tables would overflow or break. Custom responsive CSS and smart margin tweaks finally fixed it.

🚀 My Tech Stack

  • Backend: Node.js + Express
  • Rendering: Puppeteer (headless Chrome)
  • Hosting: Vercel (ridiculously fast CI/CD and deploys)

🔒 Privacy

No chats are stored on our servers—everything is rendered on-the-fly and deleted instantly. Your data stays yours.


🙏 Shoutouts

  • ChatGPT — for giving makers everywhere a platform to build for (and with!).
  • Cursor — for making the coding process smoother and way more fun.

💬 Give It a Try!

It’s free, requires no login, and was built to solve one simple frustration.

👉 https://pdfchatgpt.com

What’s the most complex ChatGPT thread you have? Try and break my app with it—I’d love to hear your results in the comments!

Top comments (0)