āļ§āļīāļāļĩāļāļēāļĢāđāļāļĨāļāļĢāļđāļāļ āļēāļāđāļāđāļ Base64 Data URL
Base64 Image Data URL āļāļ·āļāļāļ°āđāļĢ?
Base64 image data URL āļāļąāļāđāļāļĨāđāļĢāļđāļāļ āļēāļāļāļąāđāļāļŦāļĄāļāđāļāļĒāļāļĢāļāđāļāđāļāļāļŠāļēāļĢāđāļ§āđāļāđāļāđāļāļŠāļāļĢāļīāļāļāđāļāļāļ§āļēāļĄ āļāļāļąāļāļāļ§āļēāļĄāļāļģāđāļāđāļāđāļāļāļēāļĢāļĢāđāļāļāļāļ HTTP āđāļĒāļāļāđāļēāļāļŦāļēāļāđāļāļ·āđāļāđāļŦāļĨāļāļĢāļđāļāļ āļēāļ āđāļāļāļāļĩāđāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāļāļ°āļāļķāļāđāļāļĨāđāļ āļēāļĒāļāļāļ āļāđāļāļĄāļđāļĨāļĢāļđāļāļ āļēāļāļāđāļĄāļĩāļāļĒāļđāđāđāļĨāđāļ§āđāļ HTML āļŦāļĢāļ·āļ CSS
āļĢāļđāļāđāļāļāļĄāļĩāļĨāļąāļāļĐāļāļ°āļāļąāļāļāļĩāđ:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==
āđāļĒāļāļŠāđāļ§āļāļāļĢāļ°āļāļāļ:
data:â āļāļģāļāļģāļŦāļāđāļē data URI schemeimage/pngâ MIME type āļāļāļāļĢāļđāļāļ āļēāļāļāļĩāđāļāļąāļ;base64â āļĢāļ°āļāļļāļāļēāļĢāđāļāđāļēāļĢāļŦāļąāļŠ Base64,iVBORw0...â āļāđāļāļĄāļđāļĨāļĢāļđāļāļ āļēāļāļāļĩāđāđāļāđāļēāļĢāļŦāļąāļŠ Base64 āļāļĢāļīāļ
āļāļģāđāļĄāļāđāļāļāđāļāļĨāļāļĢāļđāļāļ āļēāļāđāļāđāļ Base64?
āļāļēāļĢāļāļąāļāļĢāļđāļāļ āļēāļāđāļāđāļ Base64 āļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāđāļāļŦāļĨāļēāļĒāļŠāļāļēāļāļāļēāļĢāļāđ:
āļĨāļāļāļģāļāļ§āļ HTTP Requests
āđāļāļĨāđāļĢāļđāļāļ āļēāļāļ āļēāļĒāļāļāļāđāļāđāļĨāļ°āđāļāļĨāđāļāđāļāļāļāļēāļĢ HTTP request āđāļĒāļāļāđāļēāļāļŦāļēāļ Base64 data URL āļāļāļąāļ requests āđāļŦāļĨāđāļēāļāļĩāđ āļāļķāđāļāļŠāļēāļĄāļēāļĢāļāļāļĢāļąāļāļāļĢāļļāļāđāļ§āļĨāļēāđāļāļāļēāļĢāđāļŦāļĨāļāļŦāļāđāļēāđāļ§āđāļ â āđāļāļĒāđāļāļāļēāļ°āļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāļŦāļāđāļ§āļāļŠāļđāļāļŦāļĢāļ·āļāļŠāļģāļŦāļĢāļąāļāļŦāļāđāļēāļāļĩāđāļĄāļĩ assets āļāļāļēāļāđāļĨāđāļāļāļģāļāļ§āļāļĄāļēāļ
āđāļāļāļŠāļēāļĢāļāļĩāđāļŠāļĄāļāļđāļĢāļāđāđāļāļāļąāļ§āđāļāļ
āļĢāļđāļāļ āļēāļ Base64 āļāļģāđāļŦāđāđāļāļĨāđ HTML āļāļāļāļāļļāļāļāļāļāļēāđāļāđāļāļĒāđāļēāļāļŠāļĄāļāļđāļĢāļāđ āđāļāļĄāđāļāļĨāļāļāļĩāđāļĄāļĨāļāļĩāđāļĄāļĩāļĢāļđāļāļ āļēāļ Base64 āļāļģāļāļēāļāđāļāđāđāļĄāđāđāļĄāļ·āđāļāđāļāļĢāđāļāļĢāļĄāļĢāļąāļāļŠāđāļāļāļĩāđāļĄāļĨāļāļāļāļāļđāđāļĢāļąāļāļāļĨāđāļāļāļāļĢāļąāļāļĒāļēāļāļĢāļ āļēāļĒāļāļāļ āđāļāļāļģāļāļāļāđāļāļĩāļĒāļ§āļāļąāļ āđāļāļāļŠāļēāļĢ HTML āļāļĩāđāļĄāļĩāļĢāļđāļāļ āļēāļāļāļąāļāļāļĒāļđāđāļŠāļēāļĄāļēāļĢāļāđāļāļĢāđāđāļāđāļāđāļāļĨāđāđāļāļĩāļĒāļ§āđāļāļĒāđāļĄāđāļāđāļāļāļāļąāļāļ§āļĨāđāļāļĩāđāļĒāļ§āļāļąāļāđāļŠāđāļāļāļēāļāļĢāļđāļāļ āļēāļāļāļĩāđāđāļŠāļĩāļĒāļŦāļēāļĒ
āļŦāļāđāļēāļāļĩāđāđāļāđāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
āļŠāļģāļŦāļĢāļąāļāļĢāļđāļāļ āļēāļ hero āļāļĩāđāļāļĒāļđāđāļŠāđāļ§āļāļāļāļāļāļāļŦāļāđāļē (above-the-fold) āđāļĨāļ°āļāļāļāđāļāļĢāļ°āļāļāļ UI āļāļĩāđāļŠāļģāļāļąāļ āļāļēāļĢāļāļāļąāļāļāļēāļĢāđāļāļīāļāļāļēāļāđāļ-āļāļĨāļąāļāđāļāļīāđāļĄāđāļāļīāļĄāļŠāļēāļĄāļēāļĢāļāļāļĢāļąāļāļāļĢāļļāļāđāļĄāļāļĢāļīāļāļāļĒāđāļēāļ Largest Contentful Paint (LCP) āļāļĒāđāļēāļāđāļĢāļāđāļāļēāļĄ āļŠāļīāđāļāļāļĩāđāļĄāļĩāļāļĢāļ°āđāļĒāļāļāđāđāļāļāļēāļ°āļāļąāļāļĢāļđāļāļ āļēāļāļāļāļēāļāđāļĨāđāļ â āļŠāļģāļŦāļĢāļąāļāļĢāļđāļāļ āļēāļāļāļāļēāļāđāļŦāļāđ āļāļēāļĢāļāļąāļāļĢāļđāļāļ āļēāļāļāļĨāļąāļāļŠāđāļāļāļĨāđāļŠāļĩāļĒ
āļāļģāļāļēāļāđāļāļāļāļāļāđāļĨāļāđ
āđāļĄāļ·āđāļāļĢāļđāļāļ āļēāļāļāļđāļāļāļąāļāđāļāđāļ data URL āļĄāļąāļāļāļģāļāļēāļāđāļāđāđāļāļĒāđāļĄāđāļāđāļāļāđāļāļ·āđāļāļĄāļāđāļāđāļāļĢāļ·āļāļāđāļēāļĒ āļŠāļīāđāļāļāļĩāđāļĄāļĩāļāļļāļāļāđāļēāļŠāļģāļŦāļĢāļąāļāđāļ§āđāļāđāļāļāļāļĨāļīāđāļāļāļąāļāļāļāļāđāļĨāļāđāđāļĨāļ° Progressive Web Apps (PWAs)
āļ§āļīāļāļĩāļāļēāļĢāđāļāļĨāļāļĢāļđāļāļ āļēāļāđāļāđāļ Base64
āļ§āļīāļāļĩāļāļĩāđ 1: āđāļāđāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļāļāđāļĨāļāđ (āļāđāļēāļĒāļāļĩāđāļŠāļļāļ)
āļ§āļīāļāļĩāļāļĩāđāđāļĢāđāļ§āļāļĩāđāļŠāļļāļāđāļāļāļēāļĢāđāļāļĨāļāļĢāļđāļāļ āļēāļāđāļāđāļ Base64 āļāļ·āļāļāļēāļĢāđāļāđāđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļāļāđāļĨāļāđāđāļāļāļēāļ°āļāļēāļ āļāļąāļāđāļŦāļĨāļāļŦāļĢāļ·āļāļĨāļēāļāđāļĨāļ°āļ§āļēāļāļĢāļđāļāļ āļēāļāļāļāļāļāļļāļāļĨāļāđāļ āđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļāđāļēāļĢāļŦāļąāļŠ Base64 āļāļāļāđāļĨāļāđāļāļĢāļĩ āđāļĨāđāļ§āļāļļāļāļāļ°āđāļāđāļĢāļąāļ data URL āļāļĩāđāļŠāļĄāļāļđāļĢāļāđāļāļĢāđāļāļĄāđāļāđāļāļēāļāđāļāđāļāđāļāļāļāļāļāļļāļ
āļ§āļīāļāļĩāļāļĩāđ 2: āđāļāđ JavaScript āđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđ
FileReader API āđāļŦāđāļ§āļīāļāļĩāļāļēāļĢāļāļĩāđāļāļĢāļāđāļāļāļĢāļāļĄāļēāđāļāļāļēāļĢāđāļāļĨāļāļĢāļđāļāļ āļēāļāļāļĩāđāļāļđāđāđāļāđāđāļĨāļ·āļāļāđāļāđāļ Base64:
function imageToBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => resolve(reader.result);
reader.onerror = () => reject(new Error('Failed to read file'));
reader.readAsDataURL(file);
});
}
// Usage with a file input
document.getElementById('imageInput').addEventListener('change', async (event) => {
const file = event.target.files[0];
if (!file) return;
const dataUrl = await imageToBase64(file);
console.log(dataUrl);
// Output: data:image/jpeg;base64,/9j/4AAQ...
});
āļ§āļīāļāļĩāļāļĩāđ 3: āđāļāđ Canvas API
āļŦāļēāļāļāļļāļāļāđāļāļāļāļēāļĢāļāļĢāļąāļāļāļāļēāļ āļāļĢāļāļāļāļąāļ āļŦāļĢāļ·āļāļāļĩāļāļāļąāļāļĢāļđāļāļ āļēāļāļāđāļāļāđāļāļĨāļāđāļāđāļ Base64 Canvas API āļāļ·āļāļāļēāļāđāļĨāļ·āļāļāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄ:
function canvasToBase64(canvas, format = 'image/webp', quality = 0.8) {
return canvas.toDataURL(format, quality);
}
// Example: Resize an image before converting
async function resizeImageToBase64(file, maxWidth = 800) {
const bitmap = await createImageBitmap(file);
const canvas = document.createElement('canvas');
const ratio = Math.min(maxWidth / bitmap.width, 1);
canvas.width = bitmap.width * ratio;
canvas.height = bitmap.height * ratio;
const ctx = canvas.getContext('2d');
ctx.drawImage(bitmap, 0, 0, canvas.width, canvas.height);
return canvas.toBase64('image/jpeg', 0.85);
}
āļ§āļīāļāļĩāļāļĩāđ 4: āđāļāđ Node.js
āļāļēāļāļāļąāđāļāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ āđāļāđāđāļĄāļāļđāļĨ fs āļāļąāļ Buffer āđāļāļ·āđāļāđāļāļĨāļāđāļāļĨāđāļĢāļđāļāļ āļēāļāđāļāđāļ Base64:
const fs = require('fs');
const path = require('path');
function encodeImageToBase64(filePath) {
const buffer = fs.readFileSync(filePath);
const base64 = buffer.toString('base64');
// Detect MIME type from extension
const ext = path.extname(filePath).toLowerCase();
const mimeTypes = {
'.png': 'image/png',
'.jpg': 'image/jpeg',
'.jpeg': 'image/jpeg',
'.gif': 'image/gif',
'.webp': 'image/webp',
'.svg': 'image/svg+xml',
'.ico': 'image/x-icon',
};
const mimeType = mimeTypes[ext] || 'image/png';
return `data:${mimeType};base64,${base64}`;
}
const dataUrl = encodeImageToBase64('logo.png');
console.log(dataUrl);
āļ§āļīāļāļĩāļāļĩāđ 5: āđāļāđ Command Line
āļāļ Linux āđāļĨāļ° macOS āļāļļāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāļģāļŠāļąāđāļ base64 āđāļāļāļąāļ§:
# Encode to Base64 and wrap as a data URL
echo "data:image/png;base64,$(base64 -w 0 image.png)"
āļ§āļīāļāļĩāđāļāđāļĢāļđāļāļ āļēāļ Base64 āđāļ HTML
āđāļāļĒāļāļĢāļāđāļāđāļāđāļ <img>:
<img
src="data:image/webp;base64,UklGRpYCAABXRUJQVlA4WAoAAAA..."
alt="Inline Logo"
width="200"
height="100"
/>
āļ§āļīāļāļĩāđāļāđāļĢāļđāļāļ āļēāļ Base64 āđāļ CSS
āđāļāđāļāļ āļēāļāļāļ·āđāļāļŦāļĨāļąāļ:
.icon-warning {
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjEwIi8+PGxpbmUgeDE9IjEyIiB5MT0iMTYiIHgyPSIxMiIgeTI9IjEyIi8+PGxpbmUgeDE9IjEyIiB5MT0iOCIgeDI9IjEyLjAxIiB5Mj0iOCIvPjwvc3ZnPg==');
width: 24px;
height: 24px;
}
āļāđāļāļāļ§āļĢāļāļīāļāļēāļĢāļāļēāļāđāļēāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļāđāļĨāļ°āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļ
āđāļĄāļ·āđāļāļĢāļđāļāļ āļēāļ Base64 āļĄāļĩāļāļĢāļ°āđāļĒāļāļāđ
- āđāļāļāļāļāļāļāļēāļāđāļĨāđāļāđāļĨāļ°āļāļāļāđāļāļĢāļ°āļāļāļ UI āļāļĩāđāļāđāļģāļāļ§āđāļē 10 KB
- āļĢāļđāļāļ āļēāļ above-the-fold āļāļĩāđāļŠāļģāļāļąāļ āļāļĩāđāļāļąāļāļāļ§āļēāļāļāļēāļĢāđāļŠāļāļāļāļĨ
- Sprites āđāļĨāļ°āđāļāļāļāļ SVG āļāļĩāđāđāļāđāļāļąāđāļ§āļāļąāđāļāļŦāļāđāļē
- āđāļāļĄāđāļāļĨāļāļāļĩāđāļĄāļĨ āļāļĩāđāļĢāļđāļāļ āļēāļāļ āļēāļĒāļāļāļāļĄāļąāļāļāļđāļāļāļĨāđāļāļ
- āđāļ§āđāļāđāļāļāļāļāļāđāļĨāļāđ āđāļĨāļ°āđāļāļāļŠāļēāļĢāļāļĩāđāļŠāļĄāļāļđāļĢāļāđāđāļāļāļąāļ§āđāļāļ
āđāļĄāļ·āđāļāļĢāļđāļāļ āļēāļ Base64 āļŠāđāļāļāļĨāđāļŠāļĩāļĒ
- āļĢāļđāļāļ āļēāļāļāļāļēāļāđāļŦāļāđāļŦāļĢāļ·āļāļāļ§āļēāļĄāļĨāļ°āđāļāļĩāļĒāļāļŠāļđāļ (100 KB+) â āļāđāļēāđāļāđāļāđāļēāļĒāļāļāļ Base64 āđāļĨāļ°āļāļ§āļēāļĄāļĨāđāļēāļāđāļēāđāļāļāļēāļĢ parse āļŠāđāļāļāļĨāđāļŠāļĩāļĒāļāđāļāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
- āļĢāļđāļāļ āļēāļāļāļĩāđāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāđāļāļĒ â āļāļēāļĢāļāļģāđāļŦāđāđāļāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđāļāļāļ payload HTML āļāļāļēāļāđāļŦāļāđāđāļāđāđāļĄāđāđāļāđāđāļāđāļāļāļēāļĢāļŠāļīāđāļāđāļāļĨāļ·āļāļ
- āļĢāļđāļāļ āļēāļāļāļĩāđāđāļāļĢāđāļāđāļēāļĄāļŦāļĨāļēāļĒāļŦāļāđāļē â āđāļāļĨāđāļ āļēāļĒāļāļāļāđāļāđāļāļĢāļ°āđāļĒāļāļāđāļāļēāļāļāļēāļĢāđāļāļāļĢāđāļ§āļĄāļāļąāļāļāļāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđ
- āļĢāļđāļāļ āļēāļāļāļĩāđāđāļŦāđāļāļĢāļīāļāļēāļĢāļāđāļēāļ CDN â CDN āļāļĢāļąāļāļāļēāļĢāļŠāđāļāđāļāļĨāđāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļ§āđāļēāļāđāļāļĄāļđāļĨāļāļĩāđāļāļąāļāđāļ§āđ
āļāļāļāļąāđāļ§āđāļ 10 KB
āđāļāļ§āļāļēāļāļāļĩāđāļāļđāļāļāđāļēāļāļāļķāļāļāļĒāđāļēāļāļāļ§āđāļēāļāļāļ§āļēāļ: āļŦāļēāļāļĢāļđāļāļ āļēāļāļĄāļĩāļāļāļēāļāļāđāļģāļāļ§āđāļē 10 KB āđāļŦāđāļāļīāļāļēāļĢāļāļēāļāļąāļāđāļāđāļ Base64 āļŦāļēāļāđāļŦāļāđāļāļ§āđāļēāļāļąāđāļ āđāļŦāđāđāļŦāđāļāļĢāļīāļāļēāļĢāđāļāđāļāđāļāļĨāđāđāļĒāļāļāđāļēāļāļŦāļēāļ āļāļĩāđāđāļāđāļāļāļēāļĢāļŠāļĢāđāļēāļāļŠāļĄāļāļļāļĨāļĢāļ°āļŦāļ§āđāļēāļāļāđāļēāđāļāđāļāđāļēāļĒāļāļāļ HTTP requests āļāļąāļāļāđāļēāđāļāđāļāđāļēāļĒāļāļāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāđāļēāļĢāļŦāļąāļŠ Base64 āđāļ HTML āļāļāļāļāļļāļ
āļāļĒāđāļēāļāđāļĢāļāđāļāļēāļĄ āđāļāļāļāđāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļķāđāļāļāļĒāļđāđāļāļąāļāļŠāļāļēāļāļāļēāļĢāļāđāđāļāļāļēāļ°āļāļāļāļāļļāļ:
- HTTP/2 multiplexing āļĨāļāļāļĨāđāļŠāļĩāļĒāļāļāļ requests āļŦāļĨāļēāļĒāļĢāļēāļĒāļāļēāļĢ āļāļģāđāļŦāđāđāļāļĨāđāļ āļēāļĒāļāļāļāļāđāļēāļŠāļāđāļāļĄāļēāļāļāļķāđāļ
- āļāļāļāļēāļĢāđāļāļ·āđāļāļĄāļāđāļāļāļĩāđāļāđāļē āļāļēāļĢāļāļāļąāļ requests āļāļēāļāļĄāļĩāļāļļāļāļāđāļēāđāļĄāđāļŠāļģāļŦāļĢāļąāļāļĢāļđāļāļ āļēāļāļāļĩāđāđāļŦāļāđāļāļ§āđāļē
- āļŠāļģāļŦāļĢāļąāļāļāļĢāļąāļāļĒāļēāļāļĢāđāļ critical rendering path āđāļŦāđāļāļąāļāđāļĄāđāđāļāđāļĢāļđāļāļ āļēāļāļāļĩāđāđāļŦāļāđāļāļ§āđāļēāļŦāļēāļāļĄāļąāļāļŦāļĄāļēāļĒāļāļķāļāļāļēāļĢāđāļāļīāļāļāļēāļāđāļ-āļāļĨāļąāļāļāđāļāļĒāļĨāļāļŦāļāļķāđāļāļāļĢāļąāđāļ
āļāđāļāļāļ§āļĢāļāļīāļāļēāļĢāļāļēāđāļāļĩāđāļĒāļ§āļāļąāļāļāļēāļĢāļāļĩāļāļāļąāļ
āļŦāļēāļāļāļļāļāļāļģāļĨāļąāļāđāļāļĨāļāļĢāļđāļāļ āļēāļ JPEG āļŦāļĢāļ·āļ PNG āđāļāđāļ Base64 āđāļŦāđāļāļīāļāļēāļĢāļāļēāđāļāđ WebP āđāļāļ WebP āđāļŦāđāļāļēāļĢāļāļĩāļāļāļąāļāļāļĩāđāđāļŦāļāļ·āļāļāļ§āđāļēāđāļāļĢāļ°āļāļąāļāļāļļāļāļ āļēāļāđāļāļĩāļĒāļ§āļāļąāļ āļŠāđāļāļāļĨāđāļŦāđāļŠāļāļĢāļīāļ Base64 āļĄāļĩāļāļāļēāļāđāļĨāđāļāļĨāļ āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļāļāđāļĨāļāđāļāļģāļāļ§āļāļĄāļēāļāđāļŦāđāļāļļāļāđāļāđāļēāļĢāļŦāļąāļŠāļĢāļđāļāļ āļēāļāđāļŦāļĄāđāļāđāļāļāđāļāļĨāļāđāļāđāļ Base64
āđāļāļĨāļāļĢāļđāļāļ āļēāļāļāļāļāļāļļāļāđāļāđāļ Base64
āļāļĢāđāļāļĄāļāļĩāđāļāļ°āļāļąāļāļĢāļđāļāļ āļēāļāđāļāļĒāļāļĢāļāđāļāđāļāđāļāļāļāļāļāļļāļāļŦāļĢāļ·āļāļĒāļąāļ? āđāļāđ āđāļāļĢāļ·āđāļāļāļĄāļ·āļāđāļāđāļēāļĢāļŦāļąāļŠāđāļĨāļ°āļāļāļāļĢāļŦāļąāļŠ Base64 āļāļāļāđāļĨāļāđāļāļĢāļĩ āđāļāļ·āđāļāļāļąāļāđāļŦāļĨāļāļĢāļđāļāļ āļēāļāđāļĨāļ°āļĢāļąāļ data URL āļāļĩāđāļŠāļĄāļāļđāļĢāļāđāļŠāļģāļŦāļĢāļąāļ HTML, CSS āđāļĨāļ° JavaScript â āđāļĄāđāļāđāļāļāļāļīāļāļāļąāđāļāđāļāđ