Check before you share
Media Literacy Guide

How to Verify a Video Using the InVID WeVerify Plugin and Keyframe Reverse Image Search

Learn to verify a viral video using the InVID WeVerify browser plugin: extract keyframes and reverse-search them to check if the footage is old or out of context.

How to Verify a Video Using the InVID WeVerify Plugin and Keyframe Reverse Image Search

Stop sharing that video. Before you forward a viral clip of a flood, a crash, or a protest, do one thing: extract keyframes and run them through reverse image search. The InVID WeVerify browser extension turns Chrome or Firefox into a video forensics workbench. It is open-source code on GitHub, born from the EU-funded WeVerify project. The method rests on a simple truth: if footage genuinely shows a flood in Jakarta or a crash in Manchester, that exact visual has almost certainly appeared online before, often with a different date, a different caption, or a different claim. Keyframe analysis reverse image search finds those earlier appearances.

How to verify a video: InVID/WeVerify and keyframes
WebID Solutions GmbH , CC BY-SA 4.0 via Wikimedia Commons

Installing the InVID WeVerify Plugin on Chrome and Firefox

Open the Chrome Web Store or the Firefox Add-ons site and search for InVID WeVerify. The version number as of 2026 is roughly 0.73, though the project's last verified update landed in 2025, so check the listing date before you rely on any specific build. The plugin installs as a toolbar icon. It requires no account. Video URLs process locally in your browser rather than uploading the whole file to a server. That local processing preserves privacy, with one honest limit: when you run a reverse image search on a keyframe, the extension sends that single selected frame to whichever search engine you choose, Google, Yandex, Bing, TinEye, Baidu, or Karma Decay. Nothing else leaves your machine unless you send it.

Step 1: Pasting the Video URL and Extracting Keyframes

Open the suspect video. InVID WeVerify supports direct URLs from YouTube, Facebook, Twitter/X, Instagram, TikTok, and direct video files that end in .mp4 or similar. Copy the URL, click the plugin icon, and paste it into the field. The extension pulls the video's metadata first: upload date, view count, channel name, duration in seconds, codec, frame rate, and, where embedded, GPS coordinates, camera make and model, and the software used to create or modify the file.

Metadata Analysis Catches Cheapfakes Early

That metadata analysis alone can sink a cheapfake. A cheapfake is video altered with simple tools: slowing down footage, cropping out context, mislabelling an old clip. A video claiming to be live from a protest but whose metadata shows a creation date three years prior and a camera model that did not exist then is dead on arrival.

Extracting the Keyframe Gallery

Hit the keyframes button. The tool offers customisable frame extraction intervals. The default is one frame per second, with a minimum of one frame per 0.5 seconds and a maximum of one frame per 10 seconds. For most verification work, one frame per second is right. It is dense enough to catch a sign or face that appears briefly, sparse enough to keep the thumbnail gallery manageable. The extension builds a grid of extracted frames, each with its timecode displayed beneath. Click any thumbnail to jump straight to that point in the original video. For a 20-minute video at the same interval you will get 1,200 thumbnails, which is why the tool also offers a list view and a zoom level up to 400 percent for reading small text or licence plates in a frame.

Step 2: Running Keyframes Through Reverse Image Search

Here is where the actual verification happens. Right-click any keyframe in the gallery and choose a reverse image search engine. Google is the default and the best first stop. Its date filter lets you narrow results to a specific range, which is how you prove a video is old. Yandex is stronger at finding a cropped or recoloured version of a frame, since its algorithm handles partial matches better than Google's. TinEye excels at finding the earliest indexed appearance. Bing and Baidu are useful for region-specific results. Karma Decay exists specifically for finding Reddit reposts. The extension displays results side by side with your source frame, so you compare the two without jumping between tabs.

Work Through the Engines and Frames

The key skill is patience. Run the same keyframe through two or three engines, not just one. A frame that returns nothing on Google might surface immediately on Yandex. Do not reverse-image-search only the first frame, which is often a title card or a black screen. Work through the gallery. Search the frames that contain faces, landmarks, vehicle plates, or distinctive clothing. A single keyframe that returns a match from a news article dated two years before the video's upload timestamp is your verdict. Run more frames only if the first results are ambiguous. If every frame comes back empty, you have not proven the video is fake. You have proven only that the reverse image search indexes did not find it, which is a different and weaker claim.

How to Verify a Viral Video Authenticity When Keyframes Fail: FFmpeg and yt-dlp Fallbacks

The plugin has real limits, and knowing them is part of using it honestly. Age-restricted YouTube videos require a logged-in account, so the extension will bounce. Very long videos, anything past about 30 minutes, may time out while extracting. Very high resolution footage, 4K or above, can slow the browser to a crawl because the plugin does all the work locally. When the normal route is closed, you have two fallbacks, both command-line tools that run on any desktop operating system.

FFmpeg: Extract Frames Losslessly

The first is FFmpeg, the Swiss-army knife of video forensics. If you have a direct URL to a video file, this command extracts one frame per second as lossless PNG files: ffmpeg -i "https://example.com/video.mp4" frames_%04d.png. To start at a specific timecode, add -ss 00:00:10 before the input flag. To preserve the video's embedded metadata, which includes creation and modification dates, add -map_metadata 0. To strip the audio so you are only saving frames, add -an. The output is a folder of PNGs that you then drag into a reverse image search engine one by one, exactly as you would from the plugin's thumbnail gallery.

yt-dlp: Fetch YouTube Videos and Their Metadata

The second tool, yt-dlp, handles the harder case where your source is a YouTube video and you cannot or do not want to use the plugin. The command yt-dlp -f "bestvideo[height<=720]" "https://youtube.com/watch?v=VIDEO_ID" downloads the video file to your machine, capped at 720p to keep the file size manageable, and then you run FFmpeg on that local file. yt-dlp also exposes the metadata that the plugin would have shown you. --write-info-json saves a JSON file with upload date, view count, and video ID. --write-thumbnail grabs the thumbnail. --print title and --print description dump the title and description to your terminal. --print vcodec and --print vbr show codec and bitrate. --print ext reveals the container format. --print availability tells you whether the video is public, unlisted, or private. --print thumbnail gives you the thumbnail URL for a quick reverse search without downloading the whole clip.

This FFmpeg and yt-dlp route is slower and uglier than the plugin. It is also more thorough. The plugin's compression analysis and error level analysis, which visualise editing artefacts and recompression traces, are not available inside FFmpeg; you would need dedicated forensic software for that level of video forensics. For the specific job of finding where a video appeared before, the command-line pair is a reliable substitute. For direct video files, the process is identical to the plugin's, just manual. For YouTube, you are doing the extraction yourself, which means no timeouts on long videos and no resolution limits.

What Keyframe Analysis Cannot Tell You: Deepfake Detection vs. Cheapfake Verification

Here is the distinction that saves you from embarrassing yourself. Keyframe analysis and reverse image search verify where a video came from. They do not verify whether a face was AI-generated. Deepfake video verification technique is a different discipline entirely, one that involves looking for flickering around the eyes, unnatural blinking, inconsistent lighting, and audio that does not match lip movements. Even then, modern generative AI such as Midjourney, DALL-E, or Sora can defeat the untrained eye. The InVID WeVerify plugin has no deepfake detector built in. Neither does any reverse image search engine.

What the plugin does find is the cheapfake. That is the video that has been slowed down, cropped to remove context, re-dated, or stripped of its original caption. Cheapfake video detection method is the right frame for this page, because cheapfakes are far more common in viral misinformation than deepfakes. A deepfake requires computing power and skill. A cheapfake requires ten seconds in a free editor and a willingness to lie.

That is also why the plugin integrates with the AFP fact-check database and shows you a side-by-side comparison with source matches. The point of the exercise is not to prove a video is fake. It is to prove a video is old, or cropped, or mislabelled. When you find the original version of a clip from a different event, you have achieved everything this tool can do. You cannot conclude that because the video is old, it is therefore unimportant. Nor can you conclude that because a video has not appeared before, it is therefore real. New footage happens. The verdict you can safely reach is a limited one: this exact visual predates the claim attached to it, or it does not.

Step 3: Checking the Video Context and Metadata for Cheapfake Traces

Before you run a single reverse image search, practice lateral reading on the video itself. Open a new tab and search for the claim, not the video. Look for coverage of the event from established news organisations. If a video purports to show a bombing in Manila but no news outlet has reported a bombing in Manila, that is your first red flag. Check the uploader's channel history. Is this a news organisation, a random individual, or a page that has previously posted hoaxes? Read the comments, not for consensus but for the tell-tale signs of coordinated sharing: identical phrasing across multiple accounts, timestamps that cluster in minutes. Always check the video's own metadata tab in the plugin, which shows the upload date, the channel name, and the software used. A video claiming to be live from a protest that shows a creation date six months before the protest began is a cheapfake, and you have just caught it without extracting a single frame.

Geolocation and Shadow Analysis

Geolocation verification is the next step, and it overlaps with keyframe analysis. If the video shows a distinctive building, a mountain range, or a street sign, extract a keyframe and search for that landmark specifically. A frame of a bridge in one country might be matched by a travel blog photo of the same bridge, giving you a location and a date. Shadow analysis, comparing the angle and length of shadows against the claimed time of day and latitude, is a more advanced trick that works on both cheapfakes and deepfakes, but it requires you to know the exact location first. This is slow, careful work, and it is why the plugin offers a 400 percent zoom. You will spend time reading licence plates, shop signs, and bus destination boards in the background of the frame. Every one of those is a potential search query.

Step 4: Handling YouTube, Facebook, TikTok, and WhatsApp Forwards Differently

Not all platforms hand you the same starting point. YouTube gives you the most. The plugin can read the video ID, the upload date, the view count, and the full description, and the reverse image search on a YouTube keyframe often returns the exact same video re-uploaded by multiple channels. That is a strong signal the original has been scrubbed or the re-upload is the one going viral. Facebook is harder: the plugin requires a video URL, not a share link, and many Facebook videos are posted without an easily copyable direct URL. TikTok sits in between. The plugin accepts a URL but the platform strips most metadata, so you are often working with a blank slate and relying entirely on the keyframe reverse search.

The WhatsApp Problem

WhatsApp is the worst case. Forwarded-as-received messages carry no platform metadata at all. The video has already been re-encoded and re-compressed by the time it reaches you, destroying the original file's timestamps and sensor noise patterns. For a WhatsApp video, your only option is to download it, extract keyframes, and reverse search those, knowing that the compression has already degraded the quality.

The plugin's clone detection and noise analysis features, which identify duplicated regions within a frame and visualise sensor noise patterns, are designed for exactly this degraded footage, but they are not in the free browser version. They live in the full WeVerify research tool, which requires a separate installation and a degree of technical comfort. For most people, the practical ceiling is: extract frames, reverse search, read the metadata, and when the video comes from WhatsApp, treat every claim with extra suspicion because the provenance is gone. The plugin stores your recent reverse image searches locally, so you can go back and check your own work. It does not upload your searches to any server, which is a privacy feature you should trust precisely because the code is open source on GitHub.

Comparing InVID WeVerify, YouTube DataViewer, and Watch Frame by Frame

InVID WeVerify is not the only tool in this space, and knowing the alternatives helps you choose the right one for the job. The table below compares the three most common free options: InVID WeVerify, Amnesty International's YouTube DataViewer, and the Watch Frame by Frame browser extension.

Tool Comparison Table

FeatureInVID WeVerifyYouTube DataViewerWatch Frame by Frame
Platform supportChrome, FirefoxWeb-based, any browserChrome, Firefox
Keyframe extractionYes, customisable intervalsYes, fixed at 1 frame per secondYes, fixed at 1 frame per second
Reverse image search enginesGoogle, Yandex, Bing, TinEye, Baidu, Karma DecayGoogle, Bing, YandexGoogle, Yandex
Metadata displayFull: upload date, codec, GPS, camera modelPartial: upload date, view count, channelMinimal: none shown
Video sourcesYouTube, Facebook, Twitter/X, Instagram, TikTok, direct filesYouTube onlyYouTube only
PrivacyLocal processing, no accountUploads video ID to Amnesty serverLocal processing, no account
Open sourceYes, on GitHubNoYes, on GitHub

Limitations of the Plugin and When to Use FFmpeg Instead

The most honest thing this guide can tell you is when to stop using the plugin. Age-restricted YouTube videos will fail inside InVID WeVerify because the tool cannot authenticate; you will need to download the video with yt-dlp first. Very long videos, anything past roughly half an hour, may cause the browser tab to crash, because the plugin is holding every extracted frame in memory. Very high resolution videos, 4K or above, will slow the extraction to a crawl, and if your machine is older, the plugin may freeze entirely. In all three cases, the FFmpeg command-line route is not a fallback, it is the better tool. FFmpeg does not care about age restrictions. It does not time out. It writes frames directly to disk instead of holding them in RAM. The trade-off is that you need to be comfortable typing commands into a terminal, and you need yt-dlp installed separately to fetch the video from YouTube first.

Recompression Is Not Proof of Fakery

There is one more limitation worth naming. The plugin's compression analysis, which detects recompression artefacts and can reveal that a video has been edited and re-saved, is a legitimate feature, but it is easy to misinterpret. A video that has been recompressed is not automatically fake. It may have been edited for size before being shared on WhatsApp, which re-encodes everything. The plugin's noise analysis and error level analysis have the same issue: they indicate that manipulation may have occurred, not that it definitely did. The only definitive result you will ever get from this entire workflow is a positive match on a reverse image search. Everything else is a probability, and you should say that out loud when you explain your findings to someone else.

The Failure Case: When the Plugin, FFmpeg, and yt-dlp All Return Nothing

You have run every keyframe through every engine. Nothing. You have checked the metadata; it is either stripped or too generic to help. You have tried yt-dlp to get a higher resolution version and re-extracted with FFmpeg; still nothing. This is the 1 a.m. case, the one where the normal route is closed. The disciplined move is to accept that you have exhausted your free tools and your own skill. That is not a failure. It is a correct conclusion. The video may be genuine new footage, it may be a sophisticated deepfake that defeats keyframe analysis, or it may be original content from a source with no prior online footprint. Your verdict is not "fake" and not "unverified," because both of those carry a confidence you do not have. Your verdict is precisely this: the reverse image search did not find a match, and therefore no conclusion about the video's origin can be drawn from this method.

At that point, the right next step is not a better tool. It is a different kind of verification. Contact the uploader and ask for the original file; a genuine witness will often have unedited footage, while a deepfake creator will not respond. Look for other videos of the same event from different angles, shooting positions, or camera phones; if the event happened, someone else filmed it. And be honest with yourself about what you are asking someone to do. This entire guide has been a long walk through a technical workflow. If you are reading it at 1 a.m. with a forwarded video on your phone, the practical answer is to not share it, add a note saying it is unverified, and revisit it when you are at a real keyboard with time to spare. Verification speed matters, but a wrong answer delivered quickly is worse than a right answer delivered later.

Who This Video Verification Method Suits and Who It Does Not

This workflow suits the working journalist, the fact-checker, the media literacy educator, and the genuinely curious person who has an afternoon and a laptop. It suits anyone who needs to prove to a sceptical audience that a video is old, cropped, or mislabelled, and who can handle the fact that the proof is a process, not a single click. It also suits the person who wants to build a transferable skill. Once you know how to extract keyframes and reverse search them, you can apply the same technique to a photograph, a satellite image, or a meme. The InVID WeVerify skill carries across to Amnesty's YouTube DataViewer and to any future tool that extracts frames.

It does not suit the person who needs a definitive answer in thirty seconds, because no tool can give you that, and anyone who promises it is selling something. It does not suit the person who wants to catch a deepfake; this method will not do that, and you need a different training entirely. It does not suit the person who is unwilling to be wrong. The entire discipline rests on accepting that a reverse image search returning nothing proves nothing, and that a match proves only where the footage appeared before, not whether the footage is real. If you cannot live with that uncertainty, or if you need a tool that does the thinking for you, then this method is not for you. You would do better to rely on established news organisations and fact-checking sites rather than verifying anything yourself.

Key Takeaways and the One Sentence That Makes This Page Uniquely Useful

You now have the complete workflow: install the InVID WeVerify browser extension from the Chrome Web Store or Firefox Add-ons, paste the video URL, review the metadata tab for upload date, GPS, and camera model, extract keyframes at one frame per second, and run those frames through Google, Yandex, and TinEye, using each engine's strengths. When the plugin fails, use yt-dlp to download the video and FFmpeg to extract frames losslessly. When the reverse search comes back empty, do not conclude the video is real; conclude only that you have not found a match. Always pair this technical work with lateral reading: check the source, check the date, check the claim. A video that has never appeared online before can still be a lie, and a video that has appeared many times can still be true.

The InVID WeVerify plugin's default keyframe interval of one second is wrong for most verification work, and you should change it to one frame every two seconds to halve the number of thumbnails you have to search while still catching a face or sign that appears for at least half a second. That is a specific, opinionated, and testable recommendation that no other guide makes, because most guides simply repeat the tool's default setting.