Permudah alur kerja Anda: Cari miniwebtool.
Tambahkan
Alat terkait
Pemercantik CSSGenerator Box Shadow CSSPemeriksa Ukuran Crawl GooglebotKonverter HTML ke MarkdownKonverter Gambar ke Base64Minifier/Beautifier JavaScript🔍 Pemeriksa PlagiarismePemformat SQLKonverter XML ke JSONPemformat/Validator YAML
Beranda > Peralatan teks > Peralatan modifikasi teks > Pemercantik HTML
 

Pemercantik HTML

Alat pemercantik dan pemformat HTML online gratis. Format HTML yang dimampatkan atau berantakan secara instan dengan indentasi yang tepat, penyelarasan tag, dan pengorganisasian atribut. Pemrosesan di sisi klien — kode Anda tidak pernah meninggalkan peramban.

Pemercantik HTML
🔒 100% Sisi Klien — Kode Anda tidak pernah meninggalkan browser
Contoh Cepat
⚡ HTML Ter-minify 🔀 Indentasi Berantakan 📐 Tata Letak Semantik 📝 Elemen Formulir
Input HTML
Output
Indentasi:
⚠ Peringatan Tag
    0
    Total Tag
    0
    Elemen Unik
    0
    Kedalaman Maks
    0
    Atribut
    0
    Input (byte)
    0
    Output (byte)
    ⟨/⟩ Rincian Tag
    Perubahan Ukuran
    0%
    ', messy: '\n\n\n Postingan Blog\n \n\n \n
    \n
    \n

    Memahami Flexbox

    \n
    \n Jane Doe\n \n
    \n

    Flexbox adalah modul tata letak CSS yang kuat yang memudahkan perancangan\n struktur tata letak responsif yang fleksibel.

    \n

    Konsep Utama

    \n
      \n
    • Flex Container
    • \n
    • Flex Items
    • \n
    • Main Axis vs Cross Axis
    • \n
    • Flex Wrap
    • \n
    \n
    \n

    Flexbox mengubah cara kita berpikir tentang tata letak CSS selamanya.

    \n
    \n

    Baca lebih lanjut tentang CSS Grid untuk tata letak dua dimensi.

    \n
    \n
    \n \n', semantic: '\n\n\n \n \n Tata Letak Semantik HTML5\n\n\n
    \n \n
    \n
    \n
    \n
    \n

    Judul Artikel

    \n

    Diterbitkan pada

    \n
    \n
    \n

    Pendahuluan

    \n

    Artikel ini mendemonstrasikan elemen HTML5 semantik yang meningkatkan aksesibilitas dan SEO.

    \n
    \n Diagram elemen semantik HTML5\n
    Elemen semantik memberikan makna pada struktur dokumen.
    \n
    \n
    \n \n \n
    \n
    \n
    \n

    © 2026 Situs Saya. Dibangun dengan HTML semantik.

    \n
    \n\n', form: 'Formulir Pendaftaran
    Informasi Pribadi
    Preferensi
    ' }; function hbLoadExample(key) { document.getElementById('htmlInput').value = HB_EXAMPLES[key]; document.getElementById('htmlOutput').value = ''; hbHideStats(); } /* ── Utility Functions ───────────────────── */ function hbClearInput() { document.getElementById('htmlInput').value = ''; document.getElementById('htmlOutput').value = ''; hbHideStats(); } function hbPasteFromClipboard() { navigator.clipboard.readText().then(function(text) { document.getElementById('htmlInput').value = text; }).catch(function() {}); } function hbCopyOutput() { var text = document.getElementById('htmlOutput').value; if (!text) return; var btn = document.getElementById('hbCopyBtn'); navigator.clipboard.writeText(text).then(function() { btn.classList.add('copied'); btn.textContent = '✓ Tersalin'; setTimeout(function() { btn.classList.remove('copied'); btn.textContent = '\u29C9 Salin'; }, 1500); }).catch(function() {}); } function hbDownloadOutput() { var code = document.getElementById('htmlOutput').value; if (!code) return; var blob = new Blob([code], { type: 'text/html' }); var a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'beautified.html'; a.click(); URL.revokeObjectURL(a.href); } function hbHideStats() { document.getElementById('hbStatsRibbon').classList.remove('visible'); document.getElementById('hbTagBreakdown').classList.remove('visible'); document.getElementById('hbDiffBar').classList.remove('visible'); document.getElementById('hbWarnings').classList.remove('visible'); } /* ── HTML Element Classifications ─────────── */ var VOID_ELEMENTS = ['area','base','br','col','embed','hr','img','input','link','meta','param','source','track','wbr']; var INLINE_ELEMENTS = ['a','abbr','acronym','b','bdo','big','br','button','cite','code','dfn','em','i','img','input','kbd','label','map','object','output','q','samp','select','small','span','strong','sub','sup','textarea','time','tt','u','var']; var RAW_TEXT_ELEMENTS = ['script','style']; var PRESERVE_ELEMENTS = ['pre','code','textarea','script','style']; /* ── HTML Beautifier Engine ──────────────── */ function hbTokenize(html) { var tokens = []; var i = 0; var len = html.length; while (i < len) { // Comment if (html.substr(i, 4) === '', i + 4); if (end === -1) end = len - 3; tokens.push({ type: 'comment', value: html.substring(i, end + 3) }); i = end + 3; } // DOCTYPE else if (html.substr(i, 9).toUpperCase() === '', i); if (end === -1) end = len - 1; tokens.push({ type: 'doctype', value: html.substring(i, end + 1) }); i = end + 1; } // CDATA else if (html.substr(i, 9) === '', i + 9); if (end === -1) end = len - 3; tokens.push({ type: 'cdata', value: html.substring(i, end + 3) }); i = end + 3; } // Closing tag else if (html.substr(i, 2) === '', i); if (end === -1) end = len - 1; var tag = html.substring(i + 2, end).trim().toLowerCase(); tokens.push({ type: 'close', tag: tag, value: html.substring(i, end + 1) }); i = end + 1; } // Opening tag else if (html[i] === '<' && i + 1 < len && /[a-zA-Z]/.test(html[i + 1])) { var end = i + 1; var inQuote = false; var quoteChar = ''; while (end < len) { var ch = html[end]; if (inQuote) { if (ch === quoteChar) inQuote = false; } else { if (ch === '"' || ch === "'") { inQuote = true; quoteChar = ch; } else if (ch === '>') break; } end++; } if (end >= len) end = len - 1; var tagContent = html.substring(i + 1, end); var selfClosing = tagContent.charAt(tagContent.length - 1) === '/'; if (selfClosing) tagContent = tagContent.substring(0, tagContent.length - 1); // Parse tag name and attributes var spaceIdx = tagContent.search(/[\s\/]/); var tagName, attrStr; if (spaceIdx === -1) { tagName = tagContent.trim(); attrStr = ''; } else { tagName = tagContent.substring(0, spaceIdx).trim(); attrStr = tagContent.substring(spaceIdx).trim(); } tagName = tagName.toLowerCase(); var isVoid = VOID_ELEMENTS.indexOf(tagName) !== -1; // Parse attributes var attrs = hbParseAttributes(attrStr); tokens.push({ type: 'open', tag: tagName, attrs: attrs, selfClosing: selfClosing || isVoid, isVoid: isVoid, raw: html.substring(i, end + 1) }); i = end + 1; // Handle raw text elements (script, style) if (RAW_TEXT_ELEMENTS.indexOf(tagName) !== -1 && !selfClosing && !isVoid) { var closeTag = ''); return parts.join(''); } function hbBeautifyCode(html, opts) { var indent = opts.indent || ' '; var sortAttrs = opts.sortAttrs || false; var removeComments = opts.removeComments || false; var preserveInline = opts.preserveInline !== false; var tokens = hbTokenize(html); var output = []; var level = 0; var preserveStack = 0; function addIndent(d) { var r = ''; for (var j = 0; j < d; j++) r += indent; return r; } function isInline(tagName) { return preserveInline && INLINE_ELEMENTS.indexOf(tagName) !== -1; } function isPreserve(tagName) { return PRESERVE_ELEMENTS.indexOf(tagName) !== -1; } for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; if (token.type === 'comment') { if (!removeComments) { if (preserveStack > 0) { output.push(token.value); } else { output.push(addIndent(level) + token.value); } } } else if (token.type === 'doctype') { output.push(token.value); } else if (token.type === 'cdata') { output.push(addIndent(level) + token.value); } else if (token.type === 'open') { var tag = hbBuildTag(token.tag, token.attrs, token.selfClosing, sortAttrs); if (preserveStack > 0) { output.push(tag); if (isPreserve(token.tag) && !token.selfClosing) preserveStack++; } else if (isInline(token.tag)) { // Check if previous output ends with text on the same line if (output.length > 0) { var last = output[output.length - 1]; // If last line has text content, append inline tag to same line var lastNewline = last.lastIndexOf('\n'); var lastLine = lastNewline === -1 ? last : last.substring(lastNewline + 1); if (lastLine.trim() && !lastLine.trim().match(/^<\/(div|section|article|main|header|footer|nav|aside|ul|ol|li|table|tr|td|th|thead|tbody|tfoot|form|fieldset|dl|dt|dd|details|summary|figure|figcaption|blockquote|p|h[1-6]|pre|hr)>/i)) { output[output.length - 1] = last + tag; } else { output.push(addIndent(level) + tag); } } else { output.push(addIndent(level) + tag); } if (!token.selfClosing) { // Don't increase indent for inline elements } } else { output.push(addIndent(level) + tag); if (!token.selfClosing) { if (isPreserve(token.tag)) preserveStack++; level++; } } } else if (token.type === 'close') { if (preserveStack > 0) { if (isPreserve(token.tag)) preserveStack--; output.push(''); } else if (isInline(token.tag)) { // Append closing inline tag to previous line if (output.length > 0) { output[output.length - 1] = output[output.length - 1] + ''; } else { output.push(''); } } else { level--; if (level < 0) level = 0; output.push(addIndent(level) + ''); } } else if (token.type === 'text') { if (preserveStack > 0 || token.preserve) { output.push(token.value); } else { var text = token.value; // Collapse whitespace for non-preserve context var trimmed = text.replace(/\s+/g, ' ').trim(); if (trimmed) { // Check if adjacent to inline elements var prevToken = i > 0 ? tokens[i - 1] : null; var nextToken = i < tokens.length - 1 ? tokens[i + 1] : null; var prevIsInline = prevToken && ((prevToken.type === 'open' && isInline(prevToken.tag)) || (prevToken.type === 'close' && isInline(prevToken.tag))); var nextIsInline = nextToken && ((nextToken.type === 'open' && isInline(nextToken.tag)) || (nextToken.type === 'close' && isInline(nextToken.tag))); if (prevIsInline || nextIsInline) { // Append to previous line for inline continuity if (output.length > 0) { output[output.length - 1] = output[output.length - 1] + trimmed; } else { output.push(trimmed); } } else { output.push(addIndent(level) + trimmed); } } } } } var result = output.join('\n'); // Clean up multiple blank lines result = result.replace(/\n{3,}/g, '\n\n'); return result.trim(); } function hbMinifyCode(html) { // Remove comments html = html.replace(//g, ''); // Collapse whitespace between tags html = html.replace(/>\s+<'); // Collapse internal whitespace html = html.replace(/\s+/g, ' '); // Trim return html.trim(); } /* ── Stats Calculation ───────────────────── */ function hbGetStats(html) { var stats = { totalTags: 0, uniqueTags: {}, maxDepth: 0, attrCount: 0, warnings: [], tagTypes: { block: {}, inline: {}, void_el: {}, semantic: {} } }; var SEMANTIC = ['article','aside','details','figcaption','figure','footer','header','main','mark','nav','section','summary','time']; var BLOCK = ['div','p','h1','h2','h3','h4','h5','h6','ul','ol','li','table','tr','td','th','thead','tbody','tfoot','form','fieldset','legend','blockquote','pre','dl','dt','dd','hr']; var tokens = hbTokenize(html); var stack = []; var depth = 0; for (var i = 0; i < tokens.length; i++) { var t = tokens[i]; if (t.type === 'open') { stats.totalTags++; stats.uniqueTags[t.tag] = (stats.uniqueTags[t.tag] || 0) + 1; if (t.attrs) stats.attrCount += t.attrs.length; // Classify tag if (SEMANTIC.indexOf(t.tag) !== -1) { stats.tagTypes.semantic[t.tag] = (stats.tagTypes.semantic[t.tag] || 0) + 1; } else if (VOID_ELEMENTS.indexOf(t.tag) !== -1) { stats.tagTypes.void_el[t.tag] = (stats.tagTypes.void_el[t.tag] || 0) + 1; } else if (INLINE_ELEMENTS.indexOf(t.tag) !== -1) { stats.tagTypes.inline[t.tag] = (stats.tagTypes.inline[t.tag] || 0) + 1; } else if (BLOCK.indexOf(t.tag) !== -1 || t.tag === 'html' || t.tag === 'head' || t.tag === 'body') { stats.tagTypes.block[t.tag] = (stats.tagTypes.block[t.tag] || 0) + 1; } else { stats.tagTypes.block[t.tag] = (stats.tagTypes.block[t.tag] || 0) + 1; } if (!t.selfClosing) { stack.push(t.tag); depth = stack.length; if (depth > stats.maxDepth) stats.maxDepth = depth; } } else if (t.type === 'close') { stats.totalTags++; // Find matching open tag var found = false; for (var j = stack.length - 1; j >= 0; j--) { if (stack[j] === t.tag) { // Warn about any unclosed tags above this for (var k = stack.length - 1; k > j; k--) { stats.warnings.push('Tag <' + stack[k] + '> tidak tertutup'); } stack.splice(j); found = true; break; } } if (!found) { stats.warnings.push('Tag penutup tidak diharapkan'); } } } // Any remaining tags on stack are unclosed for (var s = 0; s < stack.length; s++) { stats.warnings.push('Tag <' + stack[s] + '> tidak tertutup'); } return stats; } /* ── Display Functions ───────────────────── */ function hbShowStats(inputHtml, outputHtml) { var stats = hbGetStats(inputHtml); var inputSize = new Blob([inputHtml]).size; var outputSize = new Blob([outputHtml]).size; document.getElementById('hbStatTags').textContent = stats.totalTags; document.getElementById('hbStatUnique').textContent = Object.keys(stats.uniqueTags).length; document.getElementById('hbStatDepth').textContent = stats.maxDepth; document.getElementById('hbStatAttrs').textContent = stats.attrCount; document.getElementById('hbStatInputSize').textContent = hbFormatSize(inputSize); document.getElementById('hbStatOutputSize').textContent = hbFormatSize(outputSize); document.getElementById('hbStatsRibbon').classList.add('visible'); // Tag breakdown var grid = document.getElementById('hbTagGrid'); grid.innerHTML = ''; var types = [ { obj: stats.tagTypes.semantic, cls: 'tag-pill-semantic', label: 'semantic' }, { obj: stats.tagTypes.block, cls: 'tag-pill-block', label: 'block' }, { obj: stats.tagTypes.inline, cls: 'tag-pill-inline', label: 'inline' }, { obj: stats.tagTypes.void_el, cls: 'tag-pill-void', label: 'void' } ]; var hasAny = false; for (var t = 0; t < types.length; t++) { var keys = Object.keys(types[t].obj).sort(); for (var k = 0; k < keys.length; k++) { hasAny = true; var pill = document.createElement('span'); pill.className = 'tag-pill ' + types[t].cls; pill.innerHTML = '<' + keys[k] + '> ' + types[t].obj[keys[k]] + ''; grid.appendChild(pill); } } if (hasAny) { document.getElementById('hbTagBreakdown').classList.add('visible'); } // Warnings if (stats.warnings.length > 0) { var list = document.getElementById('hbWarningsList'); list.innerHTML = ''; // Deduplicate var unique = []; var seen = {}; for (var w = 0; w < stats.warnings.length; w++) { if (!seen[stats.warnings[w]]) { seen[stats.warnings[w]] = true; unique.push(stats.warnings[w]); } } for (var u = 0; u < unique.length && u < 10; u++) { var li = document.createElement('li'); li.textContent = unique[u]; list.appendChild(li); } document.getElementById('hbWarnings').classList.add('visible'); } // Diff bar var pct, isShrink; if (inputSize === 0) { pct = 0; isShrink = true; } else { var change = ((outputSize - inputSize) / inputSize) * 100; isShrink = change < 0; pct = Math.abs(change); } var fill = document.getElementById('hbDiffFill'); var cappedPct = Math.min(pct, 100); fill.style.width = cappedPct + '%'; fill.className = 'diff-fill ' + (isShrink ? 'shrink' : 'grow'); document.getElementById('hbDiffValue').textContent = (isShrink ? '-' : '+') + pct.toFixed(1) + '%'; document.getElementById('hbDiffBar').classList.add('visible'); } function hbFormatSize(bytes) { if (bytes < 1024) return bytes + ''; return (bytes / 1024).toFixed(1) + 'K'; } /* ── Main Actions ────────────────────────── */ function hbBeautify() { var input = document.getElementById('htmlInput').value; if (!input.trim()) return; var indentSel = document.getElementById('hbIndentSize').value; var indent; if (indentSel === 'tab') indent = '\t'; else indent = new Array(parseInt(indentSel) + 1).join(' '); var opts = { indent: indent, sortAttrs: document.getElementById('hbOptSortAttrs').checked, removeComments: document.getElementById('hbOptRemoveComments').checked, preserveInline: document.getElementById('hbOptPreserveInline').checked }; var output = hbBeautifyCode(input, opts); document.getElementById('htmlOutput').value = output; hbShowStats(input, output); } function hbMinify() { var input = document.getElementById('htmlInput').value; if (!input.trim()) return; var output = hbMinifyCode(input); document.getElementById('htmlOutput').value = output; hbShowStats(input, output); }

    Embed Pemercantik HTML Widget

    Tentang Pemercantik HTML

    Kutip konten, halaman, atau alat ini sebagai:

    "Pemercantik HTML" di https://MiniWebtool.com/id/pemercantik-html/ dari MiniWebtool, https://MiniWebtool.com/

    oleh tim miniwebtool. Diperbarui: 2026-03-07

    Peralatan modifikasi teks:

    Alat unggulan:

    Pembuat Grup AcakKalkulator NumerologiKalkulator Kecocokan CintaKalkulator Zodiak Matahari, Bulan & Ascendant 🌞🌙✨Kompresor VideoKalkulator UsiaPengacak NomorPengacak DaftarKonverter DMS ke Derajat DesimalNama Generator AcakKalkulator Persentase KenaikanKalkulator Pace LariPembuat Teka Teki SilangKonverter Ukuran FileGenerator Acak KataKalkulator Nomor NamaMengurutkan Berdasarkan AbjadBerapa Nomor Keberuntungan Saya?Gabungkan VideoKalkulator Durasi WaktuKonverter Desimal ke BinerKonverter Biner ke DesimalGenerator Bracket Turnamen AcakPembuat Kode MorseHuruf Kecil Huruf BesarKalkulator TanggaMengacak Angkakonverter ppm ke persenKalkulator Hari dalam Tahun - Hari ke Berapa Hari Ini?Urutkan AngkaKalkulator Deviasi Standar RelatifPencarian ID Pengguna InstagramHapus Nomor BarisKonverter FPSKonverter Persen ke PPMGenerator Nomor LotereKalkulator PVIFHapus SpasiKalkulator Penghasilan YouTubeGenerator Skema WarnaGenerator Teks Kecil ⁽ᶜᵒᵖʸ ⁿ ᵖᵃˢᵗᵉ⁾Kalkulator Pengurangan PersenKalkulator Angka TakdirKalkulator Rasio Kompresi MesinGenerator Kode BatangKonverter Lbs ke KgKonverter Hex ke DesimalPemisah AudioKalkulator hasil bagi dan sisaKalkulator Kemiringan dan KelasAlat penghitung barisKalkulator Nomor Jalan Hidup⏱️ Kalkulator JamApa Shio Saya?Kalkulator Asupan ProteinKalkulator Notasi IlmiahKalkulator Golongan DarahGenerator Palet📅 Kalkulator TanggalKonverter Biner ke OktalKonverter Desimal ke HeksadesimalKalkulator Defisit KaloriKalkulator Membandingkan PecahanGenerator AnagramKonverter Desimal ke OktalKalkulator KomisiKalkulator Posisi MatahariPencarian ID Pengguna FacebookTeks TerbalikKalkulator Ukuran BanParafrase AIAntara Dua TanggalKalkulator Pencahayaan RuanganKalkulator PVIFA Presisi TinggiKonverter Oktal ke DesimalKalkulator Perubahan PersentaseKalkulator Luas⏱️ Timer Hitung MundurKalkulator Angka PentingKalkulator PembulatanKalkulator Penjumlahan dan Pengurangan BersusunKalkulator Torsi BautGenerator Ulang Tahun AcakLooper MP3Kalkulator CatKalkulator Dosis ObatKalkulator Hari KelahiranKalkulator LuasKonverter Kode Warna Semua FormatGenerator IMEI AcakKalkulator Bilangan KompleksPemilih Nama AcakKalkulator Persen KesalahanHari Per BulanKalkulator Masa Pakai BateraiKalkulator OktalKonverter Oktal ke Biner🖱️ Penghitung KlikGenerator Teks KerenKalkulator Uang TikTokPembagi GambarPemilih Nomor AcakKalkulator Segitiga Siku-SikuKalkulator Usia KehamilanPemeriksa Nama Pengguna Media Sosial🔍 Pemeriksa PlagiarismePemilih Acakpencarian-alamat-MACKalkulator Jumlah DigitKalkulator Jam KerjaKonverter Angka RomawiPanduan Ukuran Gambar Media SosialKalkulator Jarak PenerbanganKalkulator Kode Warna ResistorKalkulator Nomor MingguKalkulator Pembagian Bersusun PolinomialKalkulator Persentil Tinggi Badan⬛ Kalkulator Rasio Aspek🥧 Pembuat Diagram LingkaranPenghitung karakter🔊 Generator NadaKalkulator Konversi GajiKalkulator kVAKalkulator PerkalianKalkulator Perpindahan PanasKalkulator VO2 MaxTabel ASCIIKalkulator SinusPencari KerjaPengembang Kalimat AISimulator Gerbang LogikaBalik Gambargenerator-teks-terbalikHapus Audio dari VideoKalkulator Ampere ke WattKalkulator FaktorialKalkulator Lye Pembuatan Sabun (SAP)Kalkulator Watt ke AmpereKonverter Biner ke HexPeningkat GambarKalkulator Pembelian LeasingKalkulator Campuran OktanKalkulator Campuran Oli 2 TakKalkulator Kapasitas MesinKalkulator Sofa Muat PintuKalkulator Cord Kayu BakarKalkulator CADR Pembersih UdaraKalkulator Ukuran DehumidifierKalkulator Ukuran Kipas Angin Langit-LangitKalkulator Ukuran TiraiKalkulator Ukuran KarpetKalkulator Tinggi Menggantung BingkaiKalkulator Ketinggian Pemasangan TVKalkulator Ukuran TVKalkulator Volume dan Liner KolamKalkulator Garam Kolam RenangKalkulator Volume Kolam RenangKalkulator Ukuran Pemanas AirKalkulator Resin EpoksiKalkulator Jarak BalusterKalkulator Plin & TrimKalkulator Pelapis DindingKalkulator Pewarna DekKalkulator Benih RumputKalkulator Rumput GulungKalkulator AspalKalkulator Yard KubikKalkulator Panjang AntenaKalkulator Pengisian KonduitKalkulator Kapasitor Seri dan ParalelKalkulator Reaktansi InduktifKalkulator Lux ke LumenKonverter Lumen ke WattKalkulator Ukuran GeneratorKonverter mAh ke WhKalkulator Daya 3 FasaKalkulator Resistor SeriKalkulator GesekanKalkulator Bidang MiringKalkulator Keuntungan MekanisKalkulator Kecepatan SuaraKalkulator Kecepatan GelombangKalkulator Daya ApungKalkulator Kecepatan TerminalKalkulator Panjang Gelombang de BroglieKalkulator Energi FotonKalkulator E=mc²Kalkulator Dilatasi WaktuKalkulator Hukum Ketiga KeplerKalkulator Kecepatan LepasKalkulator Gaya GravitasiKalkulator Hukum Beer-LambertKalkulator Persamaan NernstKalkulator Tekanan OsmotikKalkulator Kenaikan Titik DidihKalkulator Penurunan Titik BekuKalkulator Komposisi PersenKalkulator NormalitasKalkulator MolalitasKonverter pKa ke KaKalkulator Henderson-HasselbalchKalkulator Hasil TeoretisKalkulator Reaktan PembatasKalkulator Konfigurasi ElektronTabel Periodik InteraktifGenerator Rencana Pembelajaran AIGenerator Kuis AIGenerator Sitasi APA/MLA/ChicagoKalkulator Persentase KehadiranKalkulator Skor APKalkulator Skor ACTKalkulator Skor SATKonverter Persentase ke CGPAKonverter CGPA ke PersentasePenilai Nilai Mudah (EZ Grader)Kalkulator Biaya Membesarkan AnakKalkulator Asupan Susu BayiKalkulator Ukuran PopokGenerator Nama BayiPrediktor Warna Mata BayiKalkulator Persentil BMI AnakPrediksi Tinggi Badan AnakKalkulator Waktu Penggandaan hCGKalkulator Perkiraan Lahir IVFKalkulator ImplantasiPrediktor Jenis Kelamin Bayi CinaPemformat Tanggal ISO 8601Konverter Tanggal JulianKalkulator Tidur SiangMoon Phase CalculatorKalkulator Matahari Terbit & TerbenamJam DuniaKonverter Tanggal ke Angka RomawiHitung Mundur PensiunKalkulator PemulihanKalkulator Setengah Ulang TahunKalkulator Hari JadiKalkulator Pembagian TipKalkulator ROI Email MarketingKalkulator Biaya Per LeadKalkulator Modal KerjaGenerator Karakter RPG Acak