vision-squeezer 0.1.9

LLM-native image optimization middleware & MCP server. Reduces vision model token consumption by snapping to tile boundaries.
Documentation
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>VisionSqueezer | LLM-Native Image Optimization</title>
    <meta name="description" content="Reduce vision model token consumption by preprocessing images into tile-boundary-aligned, padding-free formats.">
    <meta name="keywords" content="LLM, AI, Vision tokens, MCP, Claude, GPT-4o, Gemini, Image Optimization, Middleware, Anthropic, OpenAI">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/favicon-16x16.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/favicon-32x32.png">
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/apple-touch-icon.png">
    <link rel="manifest" href="/assets/site.webmanifest">
    <meta name="theme-color" content="#6366f1">
    
    <!-- Open Graph / Social -->
    <meta property="og:title" content="VisionSqueezer | LLM-Native Image Optimization">
    <meta property="og:description" content="Stop leaking vision tokens. The ultimate middleware to mathematically optimize your images for Claude, GPT, and Gemini.">
    <meta property="og:type" content="website">
    <meta property="og:url" content="https://visionsqueezer.com/">
    <meta property="og:image" content="https://visionsqueezer.com/assets/logo.png">
    <meta name="twitter:image" content="https://visionsqueezer.com/assets/logo.png">
    
    <!-- Twitter -->
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="VisionSqueezer | Stop Leaking Vision Tokens">
    <meta name="twitter:description" content="Mathematically snap your images to exact LLM internal grid boundaries to slash token usage by up to 90% without losing visual detail.">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;600;800&family=JetBrains+Mono:wght@400;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="style.css">

    <!-- Umami Analytics (loaded after cookie consent) -->
    <script>
      (function() {
        var consent = localStorage.getItem('vs_cookie_consent');
        if (consent === 'accepted') {
          var s = document.createElement('script');
          s.defer = true;
          s.src = 'https://cloud.umami.is/script.js';
          s.setAttribute('data-website-id', '2d1bce07-25fc-40c0-8853-34d064d67101');
          document.head.appendChild(s);
        }
      })();
    </script>

    <!-- Schema.org Structured Data -->
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "SoftwareApplication",
      "name": "VisionSqueezer",
      "operatingSystem": "Any",
      "applicationCategory": "DeveloperApplication",
      "description": "LLM-native image optimization middleware and MCP server that mathematically snaps images to exact grid boundaries for Claude, GPT, and Gemini to reduce token usage.",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "USD"
      },
      "softwareVersion": "0.1.5",
      "url": "https://github.com/eralpozcan/vision-squeezer"
    }
    </script>
</head>
<body>
    <div class="glow-bg"></div>
    <div class="grid-bg"></div>

    <header>
        <nav class="navbar">
            <div class="logo-container">
                <img src="assets/logo.png" alt="VisionSqueezer Logo" class="nav-logo">
                <span class="logo-text">VisionSqueezer</span>
            </div>
            <div class="nav-links">
                <a href="#features">Features</a>
                <a href="#benchmarks">Benchmarks</a>
                <a href="https://github.com/eralpozcan/vision-squeezer" class="btn btn-outline" target="_blank">GitHub</a>
            </div>
        </nav>
    </header>

    <main>
        <section class="hero">
            <div class="hero-content fade-in">
                <div class="badge" id="version-badge">v0.1.5 Released 🚀</div>
                <h1 class="hero-title">Stop Leaking <br><span class="text-gradient">Vision Tokens.</span></h1>
                <p class="hero-subtitle">
                    The ultimate LLM-native image optimization middleware. It mathematically snaps your images to Claude, GPT, and Gemini's exact internal grid boundaries to slash token usage by up to 90% without losing visual detail.
                </p>
                <div class="hero-actions">
                    <a href="#install" class="btn btn-primary">Get Started</a>
                    <a href="#benchmarks" class="btn btn-secondary">View Benchmarks</a>
                </div>
            </div>
            <div class="hero-visual glass-panel float-anim">
                <div class="code-header">
                    <span class="dot red"></span>
                    <span class="dot yellow"></span>
                    <span class="dot green"></span>
                </div>
                <pre><code><span class="keyword">cargo</span> run -- data/image.jpg --model gpt4o

<span class="comment">// Squeezer simulating OpenAI's short-side algorithm...</span>
Input:  4096×3072  (2.2 MB)
Output: 4095×2048  (1.2 MB)

<span class="string">Tokens Saved: 5,595 (33.3% cheaper)</span></code></pre>
            </div>
        </section>

        <section id="features" class="features">
            <h2 class="section-title">The Math Behind the Magic</h2>
            <div class="feature-grid">
                <div class="feature-card glass-panel hover-lift">
                    <div class="icon claude-icon">C</div>
                    <h3>Claude (Area-Based)</h3>
                    <p>Claude bills strictly by pixel area <code>(W × H / 750)</code>. Every pixel of padding costs you. Squeezer aggressively crops solid borders, shaving thousands of tokens instantly.</p>
                </div>
                <div class="feature-card glass-panel hover-lift">
                    <div class="icon gpt-icon">G</div>
                    <h3>GPT-4o (Tiling System)</h3>
                    <p>OpenAI forcefully scales the shortest side to 768px, then tiles it. Squeezer simulates this backwards to snap your image right under the exact 512px tile threshold.</p>
                </div>
                <div class="feature-card glass-panel hover-lift">
                    <div class="icon gemini-icon">✨</div>
                    <h3>Gemini (Massive Tiles)</h3>
                    <p>Gemini uses huge 768×768 blocks. A slightly overlapping image costs you double. We snap images securely down to the nearest tile boundary.</p>
                </div>
                <div class="feature-card glass-panel hover-lift">
                    <div class="icon sandbox-icon">🧪</div>
                    <h3>Think in Code (Sandbox)</h3>
                    <p>Let your agent execute custom crops, binarization, or filters locally. Extract only the context you need to save up to 99.9% tokens.</p>
                </div>
                <div class="feature-card glass-panel hover-lift">
                    <div class="icon stats-icon">📊</div>
                    <h3>Persistent Analytics</h3>
                    <p>Locally tracks every optimization in a SQLite database. View your cumulative USD savings directly from your terminal or AI agent.</p>
                </div>
                <div class="feature-card glass-panel hover-lift">
                    <div class="icon mcp-icon">🔌</div>
                    <h3>Universal MCP</h3>
                    <p>Works natively with Claude Code, Cursor, Zed, and VS Code. No complex setup, just plug it into your favorite AI tool.</p>
                </div>
            </div>

            <div class="gpt5-note glass-panel hover-lift">
                <div class="gpt5-content">
                    <div class="icon gpt5-icon">5</div>
                    <div>
                        <h3>Wait, what about GPT-5?</h3>
                        <p>GPT-5 handles up to <strong>10.24 Megapixels</strong> natively (with a hard cap of 1536 tokens). Because of these massive architectural limits, grid-tiling optimization is rarely needed. However, Squeezer still processes GPT-5 images to strip heavy padding and compress file sizes (from MBs to KBs) for much faster API uploads and drastically reduced latency.</p>
                    </div>
                </div>
            </div>
        </section>

        <section id="benchmarks" class="benchmarks">
            <h2 class="section-title">Interactive <span class="text-gradient">Savings Calculator</span></h2>
            <div class="benchmark-container glass-panel">
                
                <div class="controls-grid">
                    <div class="control-group">
                        <label>Select Image Source</label>
                        <div class="toggle-group" id="image-toggle">
                            <button class="toggle-btn active" data-val="standard">Standard (4MP)</button>
                            <button class="toggle-btn" data-val="highres">High-Res (12MP)</button>
                        </div>
                    </div>
                    <div class="control-group">
                        <label>Optimization Target</label>
                        <div class="toggle-group" id="target-toggle">
                            <button class="toggle-btn active" data-val="agnostic">Agnostic</button>
                            <button class="toggle-btn" data-val="gpt4o">GPT-4o</button>
                            <button class="toggle-btn" data-val="claude">Claude</button>
                        </div>
                    </div>
                </div>

                <hr class="bench-divider">
                
                <div class="bench-content active">
                    <p class="bench-desc" id="calc-desc">Optimizing a standard 2400x1670 screenshot. Target: <b>Agnostic</b>.</p>
                    <div class="stats-grid">
                        <div class="stat-card" id="card-claude">
                            <h4>Tokens Saved (Claude)</h4>
                            <div class="stat-value" id="val-claude">-- <small>(--)</small></div>
                            <div class="stat-sub" id="sub-claude">--</div>
                        </div>
                        <div class="stat-card" id="card-gpt">
                            <h4>Tokens Saved (GPT-4o)</h4>
                            <div class="stat-value" id="val-gpt">-- <small>(--)</small></div>
                            <div class="stat-sub" id="sub-gpt">--</div>
                        </div>
                        <div class="stat-card" id="card-file">
                            <h4>File Size Reduced</h4>
                            <div class="stat-value" id="val-file">-- <small>Smaller</small></div>
                            <div class="stat-sub" id="sub-file">--</div>
                        </div>
                    </div>
                    <p class="bench-note" id="calc-note">--</p>
                </div>
            </div>
        </section>

        <section id="install" class="install-section">
            <h2 class="section-title">Universal MCP Integration</h2>
            <p style="text-align:center; color: var(--text-secondary); margin-bottom: 2rem;">Select your agent or editor below. Thanks to <code style="color: var(--primary); background: rgba(99, 102, 241, 0.1); padding: 2px 6px; border-radius: 4px;">npx -y</code>, zero global installation is required! Just paste the configuration.</p>
            
            <div class="install-selector">
                <select id="editor-select" onchange="updateInstallCode()">
                    <option value="claude-code">Claude Code (CLI)</option>
                    <option value="cursor">Cursor (AI Editor)</option>
                    <option value="vscode">VS Code Copilot</option>
                    <option value="windsurf">Windsurf (Codeium)</option>
                    <option value="jetbrains">JetBrains (IntelliJ, WebStorm)</option>
                    <option value="zed">Zed Editor</option>
                    <option value="claude-desktop">Claude Desktop (Mac/Win)</option>
                    <option value="shell-hook">Shell Integration (Zsh/Bash)</option>
                    <option value="claude-skill">Claude Code Skill (/vision-stats)</option>
                </select>
            </div>

            <div class="install-box glass-panel code-block">
                <div class="code-header">
                    <span class="comment" id="install-comment"># Zero-config one-liner for Claude Code</span>
                    <button class="copy-btn" onclick="copyInstallCode(this)">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"></rect><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"></path></svg> Copy
                    </button>
                </div>
                <pre><code id="install-code">claude mcp add vision-squeezer -- npx -y vision-squeezer</code></pre>
            </div>
        </section>

        <section id="crawlers" class="crawler-section">
            <h2 class="section-title">Crawler Integration</h2>
            <p style="text-align:center; color: var(--text-secondary); margin-bottom: 3rem;">Automate token optimization for high-scale web scraping. Integrate with your favorite crawlers via post-processing or request interception.</p>
            
            <div class="crawler-grid">
                <div class="crawler-card">
                    <div class="crawler-icon">🔥</div>
                    <h3>Firecrawl / Crawl4AI</h3>
                    <p>Post-process screenshots before sending to LLM. Use our CLI bridge to "squeeze" images in your pipeline.</p>
                    <div class="code-header"><span>Node.js / Python Bridge</span></div>
                    <pre><code>// Execute CLI as a bridge
const { execSync } = require('child_process');
const output = execSync('vision-squeezer screenshot.png --output opt.jpg');
console.log(output.toString());</code></pre>
                </div>

                <div class="crawler-card">
                    <div class="crawler-icon">🎭</div>
                    <h3>Playwright Interceptor</h3>
                    <p>Intercept all outgoing image requests during crawl and optimize them on-the-fly using VisionSqueezer.</p>
                    <div class="code-header"><span>Playwright Script</span></div>
                    <pre><code>await page.route('**/*.{png,jpg}', async (route) => {
  const response = await route.fetch();
  const body = await response.body();
  const optimized = await squeeze(body);
  route.fulfill({ body: optimized });
});</code></pre>
                </div>
            </div>
        </section>
    </main>

    <!-- Cookie Consent Banner -->
    <div id="cookie-banner" style="display:none; position:fixed; bottom:0; left:0; right:0; z-index:9999; background:rgba(15,15,25,0.97); border-top:1px solid rgba(99,102,241,0.3); padding:1rem 1.5rem; display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; backdrop-filter:blur(12px);">
        <p style="margin:0; color:#a0a0b8; font-size:0.875rem; flex:1; min-width:200px;">
            We use anonymous analytics (<a href="https://umami.is" target="_blank" rel="noopener" style="color:#6366f1;">Umami</a>) to understand how people discover VisionSqueezer. No personal data collected.
        </p>
        <div style="display:flex; gap:0.5rem; flex-shrink:0;">
            <button onclick="vsConsent('declined')" style="padding:0.4rem 1rem; border-radius:6px; border:1px solid rgba(255,255,255,0.15); background:transparent; color:#a0a0b8; font-size:0.8rem; cursor:pointer;">Decline</button>
            <button onclick="vsConsent('accepted')" style="padding:0.4rem 1rem; border-radius:6px; border:none; background:#6366f1; color:#fff; font-size:0.8rem; cursor:pointer; font-weight:600;">Accept</button>
        </div>
    </div>

    <footer>
        <div class="footer-content">
            <div class="footer-logo">
                <img src="assets/logo.png" alt="Logo">
                <span>VisionSqueezer</span>
            </div>
            <p>Built with 🦀 Rust. Elastic License 2.0 (ELv2).</p>
        </div>
    </footer>

    <script src="script.js"></script>
    <script>
      // Dynamic version badge from GitHub releases
      fetch('https://api.github.com/repos/eralpozcan/vision-squeezer/releases/latest')
        .then(function(r) { return r.json(); })
        .then(function(d) {
          if (d && d.tag_name) {
            var badge = document.getElementById('version-badge');
            if (badge) badge.textContent = d.tag_name + ' Released 🚀';
          }
        })
        .catch(function() {});

      // Cookie consent
      (function() {
        var banner = document.getElementById('cookie-banner');
        if (!localStorage.getItem('vs_cookie_consent') && banner) {
          banner.style.display = 'flex';
        }
      })();

      function vsConsent(choice) {
        localStorage.setItem('vs_cookie_consent', choice);
        var banner = document.getElementById('cookie-banner');
        if (banner) banner.style.display = 'none';
        if (choice === 'accepted') {
          var s = document.createElement('script');
          s.defer = true;
          s.src = 'https://cloud.umami.is/script.js';
          s.setAttribute('data-website-id', '2d1bce07-25fc-40c0-8853-34d064d67101');
          document.head.appendChild(s);
        }
      }

    </script>
</body>
</html>