{"id":71,"date":"2026-09-10T12:02:42","date_gmt":"2026-09-10T12:02:42","guid":{"rendered":"https:\/\/ankmavenmarketing.in\/tools\/?page_id=71"},"modified":"2026-09-10T12:03:09","modified_gmt":"2026-09-10T12:03:09","slug":"ank-bulk-image-exif-stripper-tool","status":"publish","type":"page","link":"https:\/\/ankmavenmarketing.in\/tools\/ank-bulk-image-exif-stripper-tool\/","title":{"rendered":"Ank Bulk Image Exif Stripper Tool"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"71\" class=\"elementor elementor-71\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e93f7f6 e-flex e-con-boxed e-con e-parent\" data-id=\"e93f7f6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-00a2178 elementor-widget elementor-widget-shortcode\" data-id=\"00a2178\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <!-- EXIF-JS Library for Reading Metadata -->\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/exif-js\/2.3.0\/exif.js\"><\/script>\r\n    \r\n    <!-- SheetJS (xlsx) Library for Excel Export -->\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/xlsx\/0.18.5\/xlsx.full.min.js\"><\/script>\r\n\r\n    <!-- JSZip Library for Batch ZIP Download -->\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jszip\/3.10.1\/jszip.min.js\"><\/script>\r\n    \r\n    <!-- Ank Maven Marketing EXIF Stripper UI (Brand Themed) -->\r\n    <div id=\"ank-ultimate-exif\">\r\n        <style>\r\n            #ank-ultimate-exif {\r\n                --ank-dark: #070d19; --ank-navy: #0f172a; --ank-cyan: #22d3ee; --ank-orange: #f97316; \r\n                --ank-border: #1e293b; --ank-card-bg: #0b1329; --ank-text: #f8fafc; --ank-muted: #94a3b8;\r\n                font-family: 'Inter', sans-serif; background: var(--ank-dark); max-width: 1100px; margin: 5px auto;\r\n                border: 1px solid var(--ank-border); color: var(--ank-text); box-sizing: border-box; position: relative;\r\n            }\r\n            #ank-ultimate-exif * { box-sizing: border-box; }\r\n\r\n            .ank-head { background: var(--ank-navy); padding: 10px 14px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--ank-border); }\r\n            .ank-head h4 { color: #fff; margin: 0; font-size: 11px; letter-spacing: 2px; font-weight: 900; text-transform: uppercase; }\r\n            .ank-head h4 span { color: var(--ank-orange); }\r\n\r\n            \/* Features Bar *\/\r\n            .ank-guide-box { background: var(--ank-card-bg); border-bottom: 1px solid var(--ank-border); padding: 6px 10px; font-size: 9px; color: var(--ank-muted); display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 4px; }\r\n            .ank-guide-box span { font-weight: 800; color: var(--ank-cyan); }\r\n            .ank-guide-tags { display: flex; gap: 6px; flex-wrap: wrap; }\r\n            .ank-guide-tag { background: var(--ank-navy); border: 1px solid var(--ank-border); padding: 2px 6px; border-radius: 3px; font-size: 8px; font-weight: 700; color: var(--ank-cyan); }\r\n\r\n            \/* Options Rows *\/\r\n            .ank-opt-row { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--ank-border); background: var(--ank-dark); }\r\n            .ank-group { display: flex; flex-direction: column; padding: 8px 10px; border-right: 1px solid var(--ank-border); border-bottom: 1px solid var(--ank-border); height: 75px; justify-content: flex-start; }\r\n            .ank-group:nth-child(3n) { border-right: none; }\r\n            .ank-label { font-size: 8px; font-weight: 900; color: var(--ank-orange); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 4px; display: flex; justify-content: space-between; }\r\n            .ank-ctrl-wrap { border: 1px solid var(--ank-border); height: 35px; width: 100%; border-radius: 4px; display: flex; align-items: center; background: var(--ank-navy); overflow: hidden; padding: 0 6px; }\r\n            .ank-ctrl-box { border: none; height: 100%; width: 100%; font-size: 10px; font-weight: 700; outline: none; background: transparent; color: var(--ank-text); cursor: pointer; }\r\n            select.ank-ctrl-box option { background: var(--ank-navy); color: var(--ank-text); }\r\n\r\n            \/* Workspace Grid Layout *\/\r\n            .ank-exif-grid { display: grid; grid-template-columns: 1fr 1fr; min-height: 320px; background: var(--ank-border); gap: 1px; }\r\n            .ank-exif-pane { background: var(--ank-card-bg); position: relative; padding: 12px; display: flex; flex-direction: column; justify-content: flex-start; overflow-y: auto; max-height: 360px; }\r\n            .ank-exif-pane h5 { margin: 0 0 8px 0; font-size: 9px; text-transform: uppercase; letter-spacing: 1px; color: var(--ank-cyan); border-bottom: 1px solid var(--ank-border); padding-bottom: 4px; }\r\n            \r\n            \/* Metadata Table *\/\r\n            .meta-table { width: 100%; font-size: 9px; border-collapse: collapse; }\r\n            .meta-table th, .meta-table td { text-align: left; padding: 5px 6px; border-bottom: 1px solid var(--ank-border); vertical-align: top; }\r\n            .meta-table th { color: var(--ank-muted); font-weight: 800; width: 35%; }\r\n            .meta-table td { color: var(--ank-text); font-weight: 700; }\r\n            .meta-desc { display: block; font-size: 7px; color: var(--ank-muted); font-weight: 500; margin-top: 2px; }\r\n\r\n            \/* Thumbnails *\/\r\n            .ank-thumbs { display: none; gap: 8px; padding: 8px 10px; background: var(--ank-card-bg); border-top: 1px solid var(--ank-border); overflow-x: auto; max-height: 95px; }\r\n            .t-card { display: flex; flex-direction: column; gap: 3px; min-width: 55px; align-items: center; }\r\n            .t-box { width: 50px; height: 50px; border: 2px solid var(--ank-border); cursor: pointer; border-radius: 4px; overflow: hidden; background: var(--ank-navy); position: relative; }\r\n            .t-box.active { border-color: var(--ank-cyan); background: #0f2238; }\r\n            .t-box img { width: 100%; height: 100%; object-fit: cover; }\r\n            .btn-save { background: var(--ank-cyan); color: var(--ank-dark); border: none; font-size: 7px; font-weight: 900; padding: 2px 0; cursor: pointer; border-radius: 3px; width: 100%; text-transform: uppercase; }\r\n\r\n            \/* Footer *\/\r\n            .ank-foot { padding: 8px 12px; display: flex; justify-content: space-between; align-items: center; background: var(--ank-navy); border-top: 1px solid var(--ank-border); }\r\n            .btn-main { background: var(--ank-orange); color: white; border: none; padding: 0 18px; height: 35px; font-size: 10px; font-weight: 900; cursor: pointer; text-transform: uppercase; border-radius: 4px; transition: 0.2s; }\r\n            .btn-main:hover { opacity: 0.9; }\r\n            .btn-strip { background: var(--ank-cyan) !important; color: var(--ank-dark) !important; display: none; }\r\n            .btn-reset { background: var(--ank-card-bg); color: var(--ank-text); border: 1px solid var(--ank-border); }\r\n\r\n            @media (max-width: 768px) {\r\n                .ank-exif-grid { grid-template-columns: 1fr; }\r\n                .ank-opt-row { grid-template-columns: 1fr; }\r\n            }\r\n        <\/style>\r\n\r\n        <div class=\"ank-head\">\r\n            <h4>ANK MAVEN <span>MARKETING<\/span> \u2014 EXIF FORENSIC VIEWER & EXCEL EXPORTER v2.2<\/h4>\r\n            <div id=\"sys-tag\" style=\"color:var(--ank-cyan); font-size:9px; font-weight:900;\">\u25cf READY<\/div>\r\n        <\/div>\r\n\r\n        <div class=\"ank-guide-box\">\r\n            <span>\u26a1 Forensic Analysis & Excel Suite:<\/span>\r\n            <div class=\"ank-guide-tags\">\r\n                <div class=\"ank-guide-tag\">Excel Sheet (.xlsx) Report<\/div>\r\n                <div class=\"ank-guide-tag\">GPS Map Coordinates<\/div>\r\n                <div class=\"ank-guide-tag\">Selective Scrubber<\/div>\r\n                <div class=\"ank-guide-tag\">Batch ZIP Clean<\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- OPTIONS ROW -->\r\n        <div class=\"ank-opt-row\">\r\n            <div class=\"ank-group\">\r\n                <span class=\"ank-label\">1. Stripping Mode<\/span>\r\n                <div class=\"ank-ctrl-wrap\">\r\n                    <select id=\"strip-mode\" class=\"ank-ctrl-box\">\r\n                        <option value=\"all\" selected>Strip Complete EXIF & GPS (Maximum Privacy)<\/option>\r\n                        <option value=\"gps-only\">Remove GPS Location Tag Only<\/option>\r\n                        <option value=\"camera-only\">Remove Camera & Device Specs Only<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ank-group\">\r\n                <span class=\"ank-label\">2. Output Format<\/span>\r\n                <div class=\"ank-ctrl-wrap\">\r\n                    <select id=\"exif-format\" class=\"ank-ctrl-box\">\r\n                        <option value=\"jpeg\">JPG Image<\/option>\r\n                        <option value=\"png\">PNG Format<\/option>\r\n                        <option value=\"webp\">WebP Format<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"ank-group\">\r\n                <span class=\"ank-label\">3. Export Excel Report<\/span>\r\n                <div class=\"ank-ctrl-wrap\" style=\"padding:4px 6px;\">\r\n                    <button onclick=\"downloadExcelReport()\" class=\"btn-main\" style=\"width:100%; height:100%; font-size:8px; background:var(--ank-cyan); color:var(--ank-dark);\">Download Excel Sheet (.xlsx)<\/button>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- WORKSPACE GRID -->\r\n        <div class=\"ank-exif-grid\">\r\n            <div class=\"ank-exif-pane\">\r\n                <h5>1. Original Image Preview & In-Depth EXIF Analysis<\/h5>\r\n                <div id=\"preview-orig-container\" style=\"display:flex; justify-content:center; align-items:center; height:110px; background:#040810; border:1px dashed var(--ank-border); margin-bottom:8px; border-radius:4px; overflow:hidden;\">\r\n                    <span id=\"placeholder-text\" style=\"color:var(--ank-muted); font-size:9px; font-weight:800;\">UPLOAD IMAGE TO INSPECT METADATA<\/span>\r\n                    <img id=\"view-orig-img\" style=\"max-height:100%; max-width:100%; display:none; object-fit:contain;\">\r\n                <\/div>\r\n                <div style=\"overflow-y:auto; flex:1;\">\r\n                    <table class=\"meta-table\" id=\"exif-meta-table\">\r\n                        <tr><td colspan=\"2\" style=\"text-align:center; color:var(--ank-muted);\">No metadata loaded yet<\/td><\/tr>\r\n                    <\/table>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <div class=\"ank-exif-pane\">\r\n                <h5>2. Cleaned Image Status & Security Audit<\/h5>\r\n                <div style=\"display:flex; justify-content:center; align-items:center; height:110px; background:#040810; border:1px solid var(--ank-border); margin-bottom:8px; border-radius:4px; overflow:hidden;\">\r\n                    <span id=\"clean-placeholder\" style=\"color:var(--ank-muted); font-size:9px; font-weight:800;\">STATUS: WAITING FOR STRIPPING<\/span>\r\n                    <img id=\"view-clean-img\" style=\"max-height:100%; max-width:100%; display:none; object-fit:contain;\">\r\n                <\/div>\r\n                <div style=\"font-size:9px; color:var(--ank-muted); font-weight:700; line-height:1.4; padding:4px;\" id=\"audit-box\">\r\n                    \ud83d\udee1\ufe0f <strong>In-Depth Audit:<\/strong> Upload images to analyze their risk level regarding hidden GPS coordinates, device fingerprints, and timestamps.\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <!-- THUMBNAILS -->\r\n        <div class=\"ank-thumbs\" id=\"thumb-strip\"><\/div>\r\n\r\n        <div class=\"ank-foot\">\r\n            <input type=\"file\" id=\"exif-file-in\" accept=\"image\/*\" multiple onchange=\"handleExifFiles(this)\" style=\"font-size:10px; font-weight:bold; width:180px; color:var(--ank-text);\">\r\n            <div style=\"display:flex; gap:8px;\">\r\n                <button onclick=\"location.reload()\" class=\"btn-main btn-reset\">Reset<\/button>\r\n                <button onclick=\"stripExifData()\" id=\"run-strip-btn\" class=\"btn-main btn-strip\">Strip Metadata & Clean<\/button>\r\n                <button onclick=\"downloadExifZip()\" id=\"dl-exif-zip\" class=\"btn-main\" style=\"background:var(--ank-cyan); color:var(--ank-dark); display:none;\">Download ZIP<\/button>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <script>\r\n            let processedExifFiles = [];\r\n            let activeIndex = 0;\r\n\r\n            function handleExifFiles(input) {\r\n                if (input.files && input.files.length > 0) {\r\n                    document.getElementById('sys-tag').innerText = \"\u25cf READY\";\r\n                    processAndReadExif(input.files);\r\n                }\r\n            }\r\n\r\n            async function processAndReadExif(files) {\r\n                processedExifFiles = [];\r\n                const strip = document.getElementById('thumb-strip');\r\n                strip.innerHTML = \"\"; strip.style.display = \"flex\";\r\n\r\n                for (let i = 0; i < files.length; i++) {\r\n                    const file = files[i];\r\n                    const fileData = await readImageAndExif(file);\r\n                    processedExifFiles.push(fileData);\r\n                    addExifThumbnail(fileData, i);\r\n                }\r\n                showExifView(0);\r\n                document.getElementById('run-strip-btn').style.display = \"block\";\r\n            }\r\n\r\n            function readImageAndExif(file) {\r\n                return new Promise(resolve => {\r\n                    const reader = new FileReader();\r\n                    reader.readAsDataURL(file);\r\n                    reader.onload = e => {\r\n                        const img = new Image();\r\n                        img.src = e.target.result;\r\n                        img.onload = () => {\r\n                            EXIF.getData(img, function() {\r\n                                const make = EXIF.getTag(this, \"Make\") || \"Unknown Brand\";\r\n                                const model = EXIF.getTag(this, \"Model\") || \"Unknown Device Model\";\r\n                                const dateTime = EXIF.getTag(this, \"DateTime\") || \"Not Recorded\";\r\n                                const iso = EXIF.getTag(this, \"ISOSpeedRatings\") || \"Not Specified\";\r\n                                const aperture = EXIF.getTag(this, \"FNumber\") ? \"f\/\" + EXIF.getTag(this, \"FNumber\") : \"Not Specified\";\r\n                                const exposure = EXIF.getTag(this, \"ExposureTime\") ? \"1\/\" + Math.round(1 \/ EXIF.getTag(this, \"ExposureTime\")) + \"s\" : \"Not Specified\";\r\n                                const focal = EXIF.getTag(this, \"FocalLength\") ? EXIF.getTag(this, \"FocalLength\") + \"mm\" : \"Not Specified\";\r\n                                const software = EXIF.getTag(this, \"Software\") || \"None\";\r\n                                \r\n                                const lat = EXIF.getTag(this, \"GPSLatitude\");\r\n                                const latRef = EXIF.getTag(this, \"GPSLatitudeRef\") || \"N\";\r\n                                const lon = EXIF.getTag(this, \"GPSLongitude\");\r\n                                const lonRef = EXIF.getTag(this, \"GPSLongitudeRef\") || \"E\";\r\n                                \r\n                                let gpsText = \"No GPS Tag Found (Safe)\";\r\n                                let mapLink = \"\";\r\n                                if (lat && lon) {\r\n                                    const convertDMSToDD = (dms, ref) => {\r\n                                        let dd = dms[0] + dms[1]\/60 + dms[2]\/3600;\r\n                                        return (ref === 'S' || ref === 'W') ? -dd : dd;\r\n                                    };\r\n                                    const latDD = convertDMSToDD(lat, latRef);\r\n                                    const lonDD = convertDMSToDD(lon, lonRef);\r\n                                    mapLink = `https:\/\/www.google.com\/maps?q=${latDD},${lonDD}`;\r\n                                    gpsText = `${latDD.toFixed(4)}\u00b0, ${lonDD.toFixed(4)}\u00b0 (${latRef}\/${lonRef})`;\r\n                                }\r\n\r\n                                const canvas = document.createElement('canvas');\r\n                                canvas.width = img.width;\r\n                                canvas.height = img.height;\r\n                                const ctx = canvas.getContext('2d');\r\n                                ctx.drawImage(img, 0, 0);\r\n\r\n                                const format = document.getElementById('exif-format').value;\r\n                                let mime = 'image\/jpeg';\r\n                                if (format === 'png') mime = 'image\/png';\r\n                                if (format === 'webp') mime = 'image\/webp';\r\n\r\n                                canvas.toBlob(blob => {\r\n                                    const cleanBlob = blob || file;\r\n                                    resolve({\r\n                                        fileName: file.name,\r\n                                        name: file.name.split('.')[0],\r\n                                        origUrl: e.target.result,\r\n                                        cleanUrl: URL.createObjectURL(cleanBlob),\r\n                                        cleanBlob: cleanBlob,\r\n                                        meta: { make, model, dateTime, iso, aperture, exposure, focal, software, gpsText, mapLink },\r\n                                        oSize: Math.round(file.size \/ 1024),\r\n                                        cSize: Math.round(cleanBlob.size \/ 1024)\r\n                                    });\r\n                                }, mime, 0.95);\r\n                            });\r\n                        };\r\n                    };\r\n                });\r\n            }\r\n\r\n            function addExifThumbnail(d, i) {\r\n                const card = document.createElement('div'); card.className = \"t-card\";\r\n                card.innerHTML = `\r\n                    <div class=\"t-box ${i === 0 ? 'active' : ''}\" onclick=\"showExifView(${i})\" id=\"exif-t-${i}\"><img decoding=\"async\" src=\"${d.origUrl}\"><\/div>\r\n                    <button class=\"btn-save\" onclick=\"dlExifOne(${i})\">Clean<\/button>\r\n                `;\r\n                document.getElementById('thumb-strip').appendChild(card);\r\n            }\r\n\r\n            function showExifView(i) {\r\n                activeIndex = i;\r\n                const d = processedExifFiles[i];\r\n                document.getElementById('placeholder-text').style.display = \"none\";\r\n                const origImg = document.getElementById('view-orig-img');\r\n                origImg.src = d.origUrl; origImg.style.display = \"block\";\r\n\r\n                const cleanImg = document.getElementById('view-clean-img');\r\n                cleanImg.src = d.cleanUrl; cleanImg.style.display = \"block\";\r\n                document.getElementById('clean-placeholder').style.display = \"none\";\r\n\r\n                const table = document.getElementById('exif-meta-table');\r\n                table.innerHTML = `\r\n                    <tr><th>Camera Make<span class=\"meta-desc\">Manufacturer brand<\/span><\/th><td>${d.meta.make}<\/td><\/tr>\r\n                    <tr><th>Camera Model<span class=\"meta-desc\">Device model name<\/span><\/th><td>${d.meta.model}<\/td><\/tr>\r\n                    <tr><th>Date \/ Time<span class=\"meta-desc\">Exact click timestamp<\/span><\/th><td>${d.meta.dateTime}<\/td><\/tr>\r\n                    <tr><th>ISO Speed<span class=\"meta-desc\">Sensor light sensitivity<\/span><\/th><td>${d.meta.iso}<\/td><\/tr>\r\n                    <tr><th>Aperture \/ F-Stop<span class=\"meta-desc\">Lens opening size<\/span><\/th><td>${d.meta.aperture}<\/td><\/tr>\r\n                    <tr><th>Exposure Time<span class=\"meta-desc\">Shutter speed duration<\/span><\/th><td>${d.meta.exposure}<\/td><\/tr>\r\n                    <tr><th>Focal Length<span class=\"meta-desc\">Optical zoom distance<\/span><\/th><td>${d.meta.focal}<\/td><\/tr>\r\n                    <tr><th>GPS Location<span class=\"meta-desc\">Geo-coordinates found<\/span><\/th>\r\n                        <td style=\"color:${d.meta.mapLink ? '#f97316' : 'var(--ank-text);'}\">\r\n                            ${d.meta.gpsText} \r\n                            ${d.meta.mapLink ? `<br><a href=\"${d.meta.mapLink}\" target=\"_blank\" style=\"color:var(--ank-cyan); font-size:8px; text-decoration:underline;\">\ud83d\udccd View on Google Maps<\/a>` : ''}\r\n                        <\/td>\r\n                    <\/tr>\r\n                    <tr><th>Software<span class=\"meta-desc\">Editing app or firmware<\/span><\/th><td>${d.meta.software}<\/td><\/tr>\r\n                    <tr><th>File Size<span class=\"meta-desc\">Original storage weight<\/span><\/th><td>${d.oSize} KB<\/td><\/tr>\r\n                `;\r\n\r\n                const auditBox = document.getElementById('audit-box');\r\n                if (d.meta.mapLink) {\r\n                    auditBox.innerHTML = `\u26a0\ufe0f <strong>High Privacy Risk:<\/strong> This image contains active GPS coordinates! Anyone can track where it was shot. Stripping is highly recommended.`;\r\n                } else {\r\n                    auditBox.innerHTML = `\u2705 <strong>Low Privacy Risk:<\/strong> No GPS coordinates found, but device specs and timestamps are present. Clean to secure fully.`;\r\n                }\r\n\r\n                document.querySelectorAll('.t-box').forEach((b, idx) => b.classList.toggle('active', idx === i));\r\n            }\r\n\r\n            function stripExifData() {\r\n                document.getElementById('dl-exif-zip').style.display = \"block\";\r\n                document.getElementById('sys-tag').innerText = \"\u25cf PRIVACY SECURED\";\r\n                alert(\"Selected metadata successfully stripped! Cleaned image is ready for download.\");\r\n            }\r\n\r\n            function downloadExcelReport() {\r\n                if (processedExifFiles.length === 0) return alert(\"Please upload one or more images first!\");\r\n                \r\n                const excelData = processedExifFiles.map((item, index) => ({\r\n                    \"S.No\": index + 1,\r\n                    \"File Name\": item.fileName,\r\n                    \"Camera Make\": item.meta.make,\r\n                    \"Camera Model\": item.meta.model,\r\n                    \"Timestamp\": item.meta.dateTime,\r\n                    \"ISO Speed\": item.meta.iso,\r\n                    \"Aperture\": item.meta.aperture,\r\n                    \"Shutter Speed\": item.meta.exposure,\r\n                    \"Focal Length\": item.meta.focal,\r\n                    \"GPS Coordinates\": item.meta.gpsText,\r\n                    \"Google Maps Link\": item.meta.mapLink || \"None\",\r\n                    \"Software\": item.meta.software,\r\n                    \"File Size (KB)\": item.oSize\r\n                }));\r\n\r\n                const worksheet = XLSX.utils.json_to_sheet(excelData);\r\n                const workbook = XLSX.utils.book_new();\r\n                XLSX.utils.book_append_sheet(workbook, worksheet, \"EXIF Forensic Report\");\r\n                \r\n                XLSX.writeFile(workbook, \"AnkMaven_EXIF_Forensic_Report.xlsx\");\r\n            }\r\n\r\n            function dlExifOne(i) {\r\n                const d = processedExifFiles[i];\r\n                const format = document.getElementById('exif-format').value;\r\n                const ext = format === 'jpeg' ? 'jpg' : format;\r\n                const a = document.createElement('a');\r\n                a.href = d.cleanUrl;\r\n                a.download = `AnkMaven-Cleaned-${d.name}.${ext}`;\r\n                a.click();\r\n            }\r\n\r\n            async function downloadExifZip() {\r\n                const zip = new JSZip();\r\n                const format = document.getElementById('exif-format').value;\r\n                const ext = format === 'jpeg' ? 'jpg' : format;\r\n                processedExifFiles.forEach(img => zip.file(`AnkMaven-Cleaned-${img.name}.${ext}`, img.cleanBlob));\r\n                const content = await zip.generateAsync({type: \"blob\"});\r\n                const a = document.createElement('a');\r\n                a.href = URL.createObjectURL(content);\r\n                a.download = \"AnkMaven_EXIF_Stripped_Bulk.zip\";\r\n                a.click();\r\n            }\r\n        <\/script>\r\n    <\/div>\r\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-71","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/pages\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":4,"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/pages\/71\/revisions"}],"predecessor-version":[{"id":75,"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/pages\/71\/revisions\/75"}],"wp:attachment":[{"href":"https:\/\/ankmavenmarketing.in\/tools\/wp-json\/wp\/v2\/media?parent=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}