Please bookmark this page to avoid losing your image tool!

YouTube Video Image And Metadata Stats For Nerds Tool

(Free & Supports Bulk Upload)

Drag & drop your images here or

The result will appear here...
You can edit the below JavaScript code to customize the image tool.
async function processImage(originalImg, overlayOpacity = "0.75", fontSize = "12", textColor = "#FFFFFF") {
    // Basic canvas setup
    const canvas = document.createElement('canvas');
    const w = originalImg.naturalWidth || originalImg.width || 800;
    const h = originalImg.naturalHeight || originalImg.height || 600;
    canvas.width = w;
    canvas.height = h;
    const ctx = canvas.getContext('2d');

    // Draw the underlying image
    ctx.drawImage(originalImg, 0, 0, w, h);

    // Attempt to extract EXIF data over dynamic import if provided
    let exifData = null;
    try {
        const exifrModule = await import('https://cdn.jsdelivr.net/npm/exifr/dist/lite.esm.js');
        exifData = await exifrModule.default.parse(originalImg);
    } catch (e) {
        console.warn("EXIF parsing failed or not present", e);
    }

    // Helper functions for fake video ID hashes
    const generateID = (len) => {
        let text = "";
        const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
        for (let i = 0; i < len; i++) text += charset.charAt(Math.floor(Math.random() * charset.length));
        return text;
    };

    const generateAlpha = (len) => {
        let text = "";
        const charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        for (let i = 0; i < len; i++) text += charset.charAt(Math.floor(Math.random() * charset.length));
        return text;
    };

    const scpn = `${generateAlpha(4)} ${generateAlpha(4)} ${generateAlpha(4)}`;
    
    // Initial standard lines mimicking YouTube Stats For Nerds
    const lines = [
        { k: "Video ID / sCPN", v: `${generateID(11)} / ${scpn}` },
        { k: "Viewport / Frames", v: `${w}x${h} / 0 dropped` },
        { k: "Current / Optimal Res", v: `${w}x${h} / ${w}x${h}` },
        { k: "Volume / Normalized", v: "100% / 100%" }
    ];

    let insertIdx = 4;

    // Inject Exif Properties to look like genuine metadata
    if (exifData) {
        const camera = [exifData.Make, exifData.Model].filter(Boolean).join(" ");
        if (camera) lines.splice(insertIdx++, 0, { k: "Camera / Make", v: camera.substring(0, 30) });

        let settings = [];
        if (exifData.ExposureTime) settings.push(`1/${Math.round(1 / exifData.ExposureTime)}s`);
        if (exifData.FNumber) settings.push(`f/${exifData.FNumber}`);
        if (exifData.ISO) settings.push(`ISO ${exifData.ISO}`);
        if (settings.length > 0) lines.splice(insertIdx++, 0, { k: "Exposure / ISO", v: settings.join(", ") });
        
        if (exifData.Software) lines.splice(insertIdx++, 0, { k: "Software", v: String(exifData.Software).substring(0, 30) });
        
        if (exifData.DateTimeOriginal) {
            const d = new Date(exifData.DateTimeOriginal);
            if (!isNaN(d.getTime())) lines.splice(insertIdx++, 0, { k: "Original Date", v: d.toISOString().split('T')[0] });
        }
    }

    // Typical YT Network activity padding
    lines.push(
        { k: "Codecs", v: "image/auto" },
        { k: "Color", v: "sRGB / bt709" },
        { k: "Connection Speed", v: `${Math.floor(Math.random() * 50000 + 10000)} Kbps` },
        { k: "Network Activity", v: "0 KB" },
        { k: "Buffer Health", v: "0.00 s" },
        { k: "Mystery Text", v: `s:${generateAlpha(2)} t:${generateAlpha(4)} m:${generateAlpha(2)}` }
    );

    // Precalculate Box Dimensions based on Text
    const parsedFontSize = parseInt(fontSize) || 12;
    const fontStr = `${parsedFontSize}px "Courier New", Courier, monospace`;
    ctx.font = fontStr;

    let maxK = 0;
    let maxV = 0;
    lines.forEach(l => {
        const wK = ctx.measureText(l.k).width;
        const wV = ctx.measureText(l.v).width;
        if (wK > maxK) maxK = wK;
        if (wV > maxV) maxV = wV;
    });

    const padding = 16;
    const gap = 24;
    const lineHeight = parsedFontSize + 6;
    const boxWidth = padding * 2 + maxK + gap + maxV + 15; // 15 for Close Button spacing
    const boxHeight = padding * 2 + lines.length * lineHeight;

    const boxX = Math.min(15, w * 0.02);
    const boxY = Math.min(15, h * 0.02);

    ctx.save();
    
    // Scale down overlay layout if the image is too small to fit the panel
    let scaleFit = 1;
    if (w < boxWidth + boxX * 2 || h < boxHeight + boxY * 2) {
        scaleFit = Math.min((w - boxX * 2) / boxWidth, (h - boxY * 2) / boxHeight);
        if (scaleFit < 0.1) scaleFit = 0.1; 
        ctx.translate(boxX, boxY);
        ctx.scale(scaleFit, scaleFit);
        ctx.translate(-boxX, -boxY);
    }

    // Draw Stats For Nerds Background window
    ctx.fillStyle = `rgba(0, 0, 0, ${parseFloat(overlayOpacity) || 0.75})`;
    if (ctx.roundRect) {
        ctx.beginPath();
        ctx.roundRect(boxX, boxY, boxWidth, boxHeight, 5);
        ctx.fill();
    } else {
        ctx.fillRect(boxX, boxY, boxWidth, boxHeight);
    }

    // Draw close button '✕' on top right
    ctx.fillStyle = textColor;
    ctx.font = `bold ${parsedFontSize + 2}px "Helvetica Neue", Helvetica, Arial, sans-serif`;
    ctx.globalAlpha = 1.0;
    const xPos = boxX + boxWidth - padding;
    const yPos = boxY + padding + (parsedFontSize / 2);
    ctx.fillText("✕", xPos - ctx.measureText("✕").width / 2, yPos + 2); 

    // Draw Metrics Data
    ctx.font = fontStr;
    lines.forEach((l, index) => {
        const y = boxY + padding + (index * lineHeight) + parsedFontSize;
        // Key Title
        ctx.globalAlpha = 0.65;
        ctx.fillText(l.k, boxX + padding, y);
        
        // Key Value
        ctx.globalAlpha = 0.95;
        ctx.fillText(l.v, boxX + padding + maxK + gap, y);
    });

    ctx.restore();
    
    return canvas;
}

Free Image Tool Creator

Can't find the image tool you're looking for?
Create one based on your own needs now!

Description

This tool overlays a technical metadata panel onto an image, mimicking the appearance of the YouTube “Stats For Nerds” interface. It processes an uploaded image to extract embedded EXIF data—such as camera model, exposure settings, and capture date—and combines it with simulated video playback statistics like viewport resolution, codec information, and network activity. It is useful for creators looking to create stylized screenshots, memes, or conceptual visuals that simulate technical video player diagnostics.

Leave a Reply

Your email address will not be published. Required fields are marked *

Other Image Tools:

YouTube Video Image and Stats For Nerds Viewer

Image To I Killed X Losky Effect Color Filter Converter

YouTube Video Photo and Stats Viewer

Image To G Major 16 Color Filter Converter

YouTube Video Photo and Image Stats For Nerds Tool

Image To Scalable Kaomoji Converter With Decorative Symbols

Kingdom Hearts SVTFOE Gameplay Image Viewer

Kingdom Hearts SVTFOE Gameplay Video Player

Image To Video Content Description Tool

Big Hero 6 2014 Tubi TV June 30 2027 Video Screenshot

No tool description provided

Big Hero 6 2014 Tubi Jun 30 2027 Photo

San Diego Comic-Con Image Gallery

Movie Studio Intro YTP Collab Style Image Maker

Movie Studio Music Fanfare Logo Maker

Movie Studio Music Fanfare Logo Generator

Kurdish Dubbing Audio to Image Visualizer Tool

Kurdish Dubbed Audio Video Tool

Kurdish Dub Audio to Image Converter

Kurdish Dub Audio Overlay Tool

Warner Bros Discovery Animation Studio Divisions Image Viewer

Image To Character Voice Actor Idea Generator

Image To Character Voice Actor Suggestion Tool

Image Color Adjustment Tool

Dingbats Logo Compilation Image Generator

Image Color and Opacity Adjustment Tool

The Lion King VHS Mar 3 1995 Image

The Lion King Hamtaro Character Cast Reimaginer

Audio Transcription and Identification Tool

The Lion King Hamtaro Character Role Swap Image Generator

Audio to Image Fanfare Visualizer Tool

Audio Clip of Universal Pictures Fanfares

Audio File to Image Converter

Universal Pictures Fanfare Audio Identifier

Universal Pictures Fanfare Audio Identification Tool

Universal Pictures Fanfare Audio Comparison Tool

See All →