// LEVELRIFT LABS

IMAGE CONVERTOR

Convert, resize, rotate, flip, and export images offline.

MOBILE HUD ONLINE

01 // Import Images

🖼️
Tap to choose images

JPG, PNG, WebP, GIF, BMP, SVG and most browser-supported images.

Everything runs in your browser. Your images do not upload anywhere.

02 // Preview

preview
FILES0
SIZE0 KB
DIMENSIONS-
TYPE-

03 // Convert Settings

Used for JPG and WebP. PNG stays lossless.
Keep aspect ratio
Flip horizontal
White background for JPG

04 // Export

Ready. Add images to begin.

Extra Tools

Tips: PNG keeps transparency. JPG cannot keep transparent backgrounds. WebP usually makes smaller files. For icons, ICO export creates a browser-friendly icon image from your canvas.

');const b=new Blob([html.join('')],{type:'text/html'}),u=URL.createObjectURL(b);const a=document.createElement('a');a.href=u;a.download='image-convertor-downloads.html';a.click();}; function bmpBlob(canvas){const w=canvas.width,h=canvas.height,ctx=canvas.getContext('2d'),data=ctx.getImageData(0,0,w,h).data,rowSize=Math.floor((24*w+31)/32)*4,pixelSize=rowSize*h,fileSize=54+pixelSize,buf=new ArrayBuffer(fileSize),dv=new DataView(buf);let p=0;function u16(v){dv.setUint16(p,v,true);p+=2}function u32(v){dv.setUint32(p,v,true);p+=4}u16(0x4D42);u32(fileSize);u32(0);u32(54);u32(40);u32(w);u32(h);u16(1);u16(24);u32(0);u32(pixelSize);u32(2835);u32(2835);u32(0);u32(0);let offset=54;for(let y=h-1;y>=0;y--){let row=offset;for(let x=0;xtmp.toBlob(r,'image/png'));const ab=await png.arrayBuffer(),buf=new ArrayBuffer(22+ab.byteLength),dv=new DataView(buf);let p=0;function u16(v){dv.setUint16(p,v,true);p+=2}function u32(v){dv.setUint32(p,v,true);p+=4}u16(0);u16(1);u16(1);dv.setUint8(p++,0);dv.setUint8(p++,0);dv.setUint8(p++,0);dv.setUint8(p++,0);u16(1);u16(32);u32(ab.byteLength);u32(22);new Uint8Array(buf,22).set(new Uint8Array(ab));return new Blob([buf],{type:'image/x-icon'})} document.querySelectorAll('.tab').forEach(b=>b.onclick=()=>document.getElementById(b.dataset.go).scrollIntoView({behavior:'smooth',block:'start'})); (function fx(){const c=$('fx'),x=c.getContext('2d');let W,H,dpr,drops=[];function rs(){dpr=Math.min(devicePixelRatio||1,2);W=innerWidth;H=innerHeight;c.width=W*dpr;c.height=H*dpr;c.style.width=W+'px';c.style.height=H+'px';x.setTransform(dpr,0,0,dpr,0,0);drops=Array.from({length:Math.floor(W/22)},()=>Math.random()*H/22)}addEventListener('resize',rs);rs();const chars='01<>[]{}PNGJPGWEBP_RIFT_CONVERT_//';function loop(){x.fillStyle='rgba(3,4,15,.08)';x.fillRect(0,0,W,H);x.font='700 18px monospace';drops.forEach((d,i)=>{const ch=chars[Math.floor(Math.random()*chars.length)],xx=i*22,yy=d*22;x.fillStyle=i%3?'rgba(0,246,255,.38)':'rgba(255,0,230,.28)';x.shadowBlur=10;x.shadowColor=x.fillStyle;x.fillText(ch,xx,yy);if(yy>H&&Math.random()>.975)drops[i]=0;else drops[i]+=0.55});requestAnimationFrame(loop)}loop()})();