1import{j as e,H as E,ab as D,D as $,ac as G,F as L,r as A}from"./index-BcXGcjVh.js";import{c as a}from"./createLucideIcon-jYmGPiD2.js";import{S as H}from"./sparkles-Ck2GXJqD.js";import{C as S,M as I}from"./mail-CMILZLIo.js";const T=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],B=a("arrow-down",T);const F=[["path",{d:"M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z",key:"kmsa83"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],v=a("circle-play",F);const q=[["path",{d:"M6 2v14a2 2 0 0 0 2 2h14",key:"ron5a4"}],["path",{d:"M18 22V8a2 2 0 0 0-2-2H2",key:"7s9ehn"}]],O=a("crop",q);const z=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],j=a("download",z);const V=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],W=a("file-text",V);const U=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Y=a("image",U);const Q=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],K=a("palette",Q);const X=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],Z=a("rotate-ccw",X);const J=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],ee=a("rotate-cw",J);const te=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],oe=a("sliders-horizontal",te);const se=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],ae=a("trash-2",se),ne="/assets/press-google-help-evidence-7sr_Xuod.png",ie="/__l5e/assets-v1/a8425855-eac5-4c00-a163-fb7f9a88512d/batch-logo.png",re={url:ie},w="/assets/screenshot-1-C4br7vxf.jpg",N="/assets/screenshot-2-BhtrZ8F9.jpg",k=re.url,le="SL2QxnqNGwQ",ce=`https://img.youtube.com/vi/${le}/maxresdefault.jpg`,C="https://batchphotoedit.com",n="[email protected]",P=G,b="https://www.youtube.com/watch?v=SL2QxnqNGwQ",de=[{id:"screenshot-1",alt:"Batch product screenshot one",thumb:w,href:w,kind:"image"},{id:"screenshot-2",alt:"Batch product screenshot two",thumb:N,href:N,kind:"image"},{id:"demo-video",alt:"Batch product demo video thumbnail",thumb:ce,href:b,kind:"video"},{id:"logo",alt:"Batch logo",thumb:k,href:k,kind:"logo",fit:"contain"}],he="inline-flex items-center justify-center gap-2 rounded-full border-[1.5px] border-black/10 bg-white px-6 py-4 text-[15px] font-medium text-text-on-light transition-colors hover:bg-black/[0.03] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-black/20 focus-visible:ring-offset-2",c="px-4 py-6 sm:py-8",d="mx-auto max-w-[1240px] rounded-[28px] px-6 py-24 sm:px-12 sm:py-28 lg:py-32",h="mx-auto max-w-[820px] text-center",m="mx-auto max-w-[760px]",p="font-[var(--font-display)] text-[40px] font-medium leading-[1.1] tracking-[-0.02em] text-text-on-light sm:text-[52px] lg:text-[60px]",x="mx-auto mt-6 max-w-[680px] font-[var(--font-m3-body)] text-[20px] leading-[1.55] text-text-on-light-muted",_="text-[16px] font-medium text-text-on-light",i="font-[var(--font-m3-body)] text-[17px] leading-[1.7] text-text-on-light-muted",u="font-[var(--font-m3-body)] text-[18px] leading-[1.7] text-text-on-light-muted",M="mt-2 font-[var(--font-m3-body)] text-[14px] leading-[1.6] text-text-on-light-muted",r="text-text-on-light underline underline-offset-2 hover:opacity-70",y="roun
1ded-2xl bg-white p-7 shadow-sm",me={mint:"bg-bg-mint-tint",peach:"bg-bg-peach-tint",lilac:"bg-bg-lilac-tint"};function pe({tint:t,children:s}){return e.jsx("div",{className:`flex h-10 w-10 items-center justify-center rounded-full ${me[t]} text-text-on-light`,children:s})}function xe({email:t}){const[s,l]=A.useState(!1),g=async()=>{try{await navigator.clipboard.writeText(t)}catch{}l(!0),window.setTimeout(()=>l(!1),2e3)};return e.jsxs("button",{type:"button",onClick:g,className:he,"aria-label":`Copy press email ${t} to clipboard`,children:[s?e.jsx(S,{className:"h-4 w-4","aria-hidden":"true"}):e.jsx(I,{className:"h-4 w-4","aria-hidden":"true"}),s?"Copied":t]})}function fe(){return e.jsxs("main",{className:"min-h-screen bg-bg-light",children:[e.jsx(E,{surface:"blog",showCta:!1}),e.jsxs("section",{className:"px-5 pt-10 sm:pt-16",children:[e.jsx(D,{maxWidth:476}),e.jsxs("header",{className:"mx-auto max-w-[820px] text-center",children:[e.jsx("h1",{className:"font-[var(--font-display)] text-[44px] font-medium leading-[1.05] tracking-[-0.025em] text-text-on-light sm:text-[60px] lg:text-[72px]",children:"Batch for Google Photos"}),e.jsx("p",{className:"mx-auto mt-6 max-w-[680px] font-[var(--font-m3-body)] text-[19px] leading-[1.55] text-text-on-light-muted sm:text-[20px]",children:"Bulk edit, delete, and download inside Google Photos. Enhance, Filter, Crop, Rotate, Add Description, Revert, apply Custom Presets, convert live photos to stills, delete your entire library, and download your entire library. Everything runs inside Google Photos. Nothing uploaded."}),e.jsxs("div",{className:"mt-9 flex flex-wrap items-center justify-center gap-3",children:[e.jsxs("a",{href:"#assets",onClick:t=>{t.preventDefault(),document.getElementById("assets")?.scrollIntoView({behavior:"smooth",block:"start"})},className:`${$("m3-primary")} inline-flex items-center gap-2`,children:[e.jsx(B,{className:"h-4 w-4","aria-hidden":"true"}),"View assets"]}),e.jsx(xe,{email:n})]})]})]}),e.jsx("section",{className:c,children:e.jsxs("div",{className:`${d} bg-bg-lilac`,children:[e.jsxs("div",{className:h,children:[e.jsx("h2",{className:p,children:"About"}),e.jsx("p",{className:x,children:"A Chrome extension that closes a long-standing feature gap in Google Photos."})]}),e.jsxs("div",{className:`${m} mt-12 space-y-5`,children:[e.jsx("p",{className:u,children:"Batch for Google Photos is a Chrome extension that closes a long-standing feature gap in Google Photos: batch editing. Users select photos, click Batch, and choose an action. Batch then automates Google Photos' own editor across the full selection."}),e.jsx("p",{className:u,children:"Google Photos has 1.5 billion monthly active users. 210 million of them edit photos every month, but repetitive edits still happen one photo at a time."}),e.jsx("p",{className:u,children:"Photos never leave Google Photos. Batch has no backend and no second library to manage. It is a layer of automation on top of Google Photos itself."})]}),e.jsx("ul",{className:"mx-auto mt-12 grid max-w-[1040px] grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-3",children:[{name:"Enhance",desc:"Run Google Photos' Auto Enhance across every photo in a selection.",icon:e.jsx(H,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Filter",desc:"Apply any of 19 filters consistently across a full batch.",icon:e.jsx(oe,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Crop",desc:"Crop to any of 9 ratios, including square, 9:16, and 3:2.",icon:e.jsx(O,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Rotate",desc:"Rotate or flip sideways imports into an upright album.",icon:e.jsx(ee,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Add Description",desc:"Add searchable descriptions across a whole batch.",icon:e.jsx(W,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Revert",desc:"Use Google Photos' own Revert to Original across selected photos.",icon:e.jsx(Z,{className:"h-5 w-5","aria-hidden":"true"}),pro:!0},{name:"Custom Presets",desc:"Tune one photo in Google Photos, save it as a preset, and apply the same look across a batch.",icon:e.jsx(K,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Convert to Stills",desc:"Convert live and motion photos to stills in bulk and reclaim storage. In early testing, many photos shrink by roughly 70 to 80 percent, though savings vary.",icon:e.jsx(Y,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Delete Library",desc:"Move your entire Google Photos library to Trash in one run. Never permanent: items stay recoverable in Trash for 30 days, and Batch never empties the Trash.",icon:e.jsx(ae,{className:"h-5 w-5","aria-hidden":"true"})},{name:"Download Library",desc:"Download your entire Google Photos library in full quality, in one run, using Google Photos' own download.",icon:e.jsx(j,{className:"h-5 w-5","aria-hidden":"true"})}].map(t=>e.jsxs("li",{className:y,children:[e.jsx(pe,{tint:"lilac",children:t.icon}),e.jsxs("div",{className:"mt-5 flex items-center gap-2",children:[e.jsx("h3",{className:_,children:t.name}),t.pro&&e.jsx("span",{className:"inline-flex items-center rounded-full border border-text-on-light/30 px-2 py-0.5 font-[var(--font-m3-body)] text-[11px] font-medium uppercase tracking-[0.08em] text-text-on-light",children:"Pro"})]}),e.jsx("p",{className:M,children:t.desc})]},t.name))})]})}),e.jsx("section",{className:"px-5 py-20 sm:py-28",children:e.jsxs("blockquote",{className:"mx-auto max-w-[860px] text-center",children:[e.jsx("p",{className:"font-[var(--font-display)] text-[26px] font-medium leading-[1.4] tracking-[-0.01em] text-text-on-light sm:text-[32px] lg:text-[36px]",children:`"I came back from a trip with 240 photos to send to the grandparents, clicking enhance, save, enhance, save like a robot. That's when I started building this."`}),e.jsx("footer",{className:"mt-6 font-[var(--font-m3-body)] text-[15px] text-text-on-light-muted",children:"Yair Levin, founder"}),e.jsx("p",{className:`${i} mx-auto mt-8 max-w-[680px]`,children:"Batch is a side project by Yair Levin who looked for a solution for years and kept finding the same unanswered requests across Google Photos forums."})]})}),e.jsx("section",{className:c,children:e.jsxs("div",{className:`${d} bg-bg-peach`,children:[e.jsxs("div",{className:h,children:[e.jsx("h2",{className:p,children:"The product gap"}),e.jsx("p",{className:x,children:"Bulk share, archive, and delete have shipped for years. Bulk edit has not."})]}),e.jsxs("div",{className:`${m}
1 mt-12 space-y-5`,children:[e.jsx("p",{className:i,children:'One Google Help Community thread asking for bulk editing was opened on February 24, 2019. It has 347 "I have the same question" votes and was locked by Google with no resolution. Similar requests have appeared across Reddit, Google Help Community, and other user forums for years.'}),e.jsx("p",{className:i,children:"Batch closes that gap by automating Google Photos' own editor. It is the first and only Chrome extension built specifically to bulk edit, delete, and download photos inside Google Photos: Enhance, Filter, Crop, Rotate, Add Description, Revert, Custom Presets, Convert to Stills, Delete Library, and Download Library."})]}),e.jsxs("figure",{className:"mx-auto mt-10 max-w-[960px]",children:[e.jsx("img",{src:ne,alt:"Google Photos Help Community thread titled 'batch apply filter' from February 24, 2019, marked Locked with 348 'I have the same question' votes.",className:"w-full rounded-2xl bg-white shadow-sm ring-1 ring-black/5",loading:"lazy",decoding:"async"}),e.jsx("figcaption",{className:"mt-3 text-center font-[var(--font-m3-body)] text-[13px] leading-[1.5] text-text-on-light-muted",children:"Google Help Community thread, opened February 24, 2019. Locked by Google with no resolution."})]})]})}),e.jsx("section",{className:c,children:e.jsxs("div",{className:`${d} bg-bg-lilac`,children:[e.jsxs("div",{className:h,children:[e.jsx("h2",{className:p,children:"The gap is horizontal"}),e.jsx("p",{className:x,children:"Batch is positioned as a baseline-setter, not a finisher. The same workflow serves a wide range of users."})]}),e.jsx("div",{className:"mx-auto mt-12 grid max-w-[1040px] grid-cols-1 gap-5 sm:grid-cols-2 lg:grid-cols-3",children:[{title:"Family trip",body:"A parent comes back with 240 photos to send to grandparents."},{title:"Wedding guest",body:"120 phone photos to share before they look like phone photos."},{title:"Field-trip parent",body:"80 photos to send to other families that night."},{title:"Wedding photographer",body:"A 2,000-photo album alongside 50 hand-edited highlights, all reading as one wedding."},{title:"Airbnb host",body:"50 listing photos shot at different times of day, reading as one continuous space."},{title:"Tour operator",body:"300 trip photos sent to every traveler."}].map(t=>e.jsxs("div",{className:y,children:[e.jsx("h3",{className:_,children:t.title}),e.jsx("p",{className:M,children:t.body})]},t.title))}),e.jsx("p",{className:`${m} ${i} mt-10 text-center`,children:"The common thread is not photo volume. It is what the album represents: a relationship across distance, a couple's biggest day, a parent who showed up, a property's earning potential, or a traveler's experience."})]})}),e.jsx("section",{className:`${c} scroll-mt-24`,id:"assets",children:e.jsxs("div",{className:`${d} bg-bg-mint`,children:[e.jsxs("div",{className:h,children:[e.jsx("h2",{className:p,children:"Assets and key facts"}),e.jsx("p",{className:x,children:"Logo, product screenshots, the product demo, and the facts you need."})]}),e.jsx("div",{className:"mx-auto mt-12 grid max-w-[1040px] grid-cols-1 gap-5 sm:grid-cols-2",children:de.map(t=>{const s=t.kind==="video",l=t.kind==="logo",g=s?{target:"_blank",rel:"noopener noreferrer"}:{download:!0},R=s?v:j,f=s?"Watch on YouTube":l?"Download logo":"Download image";return e.jsxs("a",{href:t.href,...g,"aria-label":f,className:"group relative block aspect-video overflow-hidden rounded-2xl bg-white shadow-sm ring-1 ring-black/5 transition-shadow hover:shadow-md",children:[e.jsx("img",{src:t.thumb,alt:t.alt,className:`h-full w-full ${t.fit==="contain"?"object-contain p-10":"object-cover"}`,loading:"lazy",decoding:"async"}),s&&e.jsx("div",{className:"pointer-events-none absolute inset-0 flex items-center justify-center bg-black/15 transition-colors group-hover:bg-black/25",children:e.jsx(v,{className:"h-16 w-16 text-white drop-shadow-lg","aria-hidden":"true"})}),e.jsx("span",{className:"absolute right-3 top-3 inline-flex h-9 w-9 items-center justify-center rounded-full bg-white/95 text-text-on-light shadow-sm ring-1 ring-black/5 backdrop-blur transition-colors group-hover:bg-white",title:f,children:e.jsx(R,{className:"h-4 w-4","aria-hidden":"true"})})]},t.id)})}),e.jsxs("dl",{className:`mx-auto mt-10 max-w-[1040px] ${y} grid grid-cols-1 gap-x-6 gap-y-3 sm:grid-cols-[220px_1fr] sm:p-9`,children:[e.jsx(o,{label:"Product",value:"Batch for Google Photos"}),e.jsx(o,{label:"Category",value:"Chrome extension"}),e.jsx(o,{label:"Platform",value:"Chrome desktop"}),e.jsx(o,{label:"Works with",value:"Google Photos"}),e.jsx(o,{label:"Actions",value:"Enhance, Filter, Crop, Rotate, Add Description, Revert, Custom Presets, Convert to Stills, Delete Library, Download Library"}),e.jsx(o,{label:"Pricing",value:"Free, Plus, Pro"}),e.jsx(o,{label:"Free",value:"25 photos per month"}),e.jsx(o,{label:"Plus",value:"$6.99 per month or $55 per year for 500 photos per month, plus Delete Library, Download Library, and library-wide Convert"}),e.jsx(o,{label:"Pro",value:"$24.99 per month or $199 per year for unlimited use plus Revert to Original"}),e.jsx(o,{label:"Privacy",value:"Photos stay in Google Photos. Nothing uploaded."}),e.jsx(o,{label:"Founder",value:"Yair Levin"}),e.jsx(o,{label:"Website",value:e.jsx("a",{href:C,className:r,children:C})}),e.jsx(o,{label:"Chrome Web Store",value:e.jsx("a",{href:P,target:"_blank",rel:"noopener noreferrer",className:r,children:P})}),e.jsx(o,{label:"Demo video",value:e.jsx("a",{href:b,target:"_blank",rel:"noopener noreferrer",className:r,children:b})}),e.jsx(o,{label:"Press contact",value:e.jsx("a",{href:`mailto:${n}`,className:r,children:n})})]}),e.jsxs("p",{className:`${m} ${i} mt-10 text-center`,children:["Need something else?"," ",e.jsx("a",{href:`mailto:${n}`,className:r,children:n})]})]})}),e.jsx(L,{surface:"blog"})]})}function o({label:t,value:s}){return e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"font-[var(--font-m3-body)] text-[14px] font-medium text-text-on-light",children:t}),e.jsx("dd",{className:"font-[var(--font-m3-body)] text-[15px] leading-[1.55] text-text-on-light-muted",children:s})]})}export{fe as component};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.