GIF Validator

GIF Validator is a free Vencord userplugin that finds broken or dead URLs in your Discord favorite GIFs and removes them after you confirm a checkbox list. It validates each URL with HEAD requests from Vencord's main process and saves through Discord's own settings API, with no token handling and no self-bot HTTP calls.

Inspired by jakeayy/gif-validator, a Bun CLI that does the same job from outside Discord. The plugin version avoids self-bot territory entirely and runs through your already-authenticated desktop client.

How it works

  • Reads favorites from Discord's in-memory FrecencyUserSettings store
  • Validates URLs via main-process HEAD requests (CORS-free)
  • Falls back to GET Range: bytes=0-0 on 405 responses
  • Re-numbers order 0..n-1 after deletion to keep favorites tidy
  • Saves via USER_SETTINGS_PROTO_UPDATE with partial: true
  • Concurrency limiter capped at 8 to avoid Tenor / Discord rate limits

UI

  • Validate button injected into the GIF picker subview header
  • Toolbox action and settings-panel button as alternate entry points
  • Three-state modal: idle, running with progress bar, done with checkbox list
  • Broken GIFs pre-checked, valid ones inspectable via toggle
  • Cancel mid-validation preserves whatever results landed so far
  • Theme-aware text color via Discord's CSS variables (dark + light)

Settings

  • concurrency (default 2): parallel HEAD requests, clamped to 8
  • timeoutMs (default 8000): per-request timeout
  • requireImageOrVideoContentType (default on): strict MIME check
  • treatRedirectsAsValid (default on): native bridge follows redirects

Limitations

  • Tenor placeholders, some removed GIFs return 200 with a generic image
  • Hosts with browser-fingerprint checks may report false-broken
  • Schema drift, if Discord renames favoriteGifs the plugin reports "couldn't read favorites"

FAQ

What is GIF Validator?

GIF Validator is a free Vencord userplugin that scans your Discord favorite GIFs, flags URLs that no longer respond, and removes dead entries after you confirm a checkbox list.

Is it safe to use?

Yes. It runs inside your already-authenticated Discord desktop client, reads favorites from Discord's in-memory settings store, and saves through Discord's own action creators. It does not handle tokens or impersonate self-bot HTTP APIs.

How does validation work?

The plugin issues concurrent HEAD requests from Vencord's main process (with GET Range fallback on HTTP 405), shows a confirmation modal listing broken GIFs, and re-numbers order indices after any deletion.

Inspired by jakeayy/gif-validator (Bun CLI). Built as a userplugin for Vencord.

View source on GitHub