{"id":2834,"date":"2025-05-06T00:15:47","date_gmt":"2025-05-06T00:15:47","guid":{"rendered":"https:\/\/www.ezcalculatoronline.com\/?page_id=2834"},"modified":"2026-05-09T01:57:27","modified_gmt":"2026-05-09T06:57:27","slug":"qr-code-generator","status":"publish","type":"page","link":"https:\/\/www.ezcalculatoronline.com\/online-tools\/qr-code-generator\/","title":{"rendered":"QR Code Generator"},"content":{"rendered":"<div id=\"tdi_1\" class=\"tdc-zone\"><div class=\"tdc_zone tdi_2  wpb_row td-pb-row\"  >\n<style scoped>\n\n\/* custom css *\/\n.tdi_2{\r\n                    min-height: 0;\r\n                }\n<\/style><div id=\"tdi_3\" class=\"tdc-row\"><div class=\"vc_row tdi_4  wpb_row td-pb-row\" >\n<style scoped>\n\n\/* custom css *\/\n.tdi_4,\r\n                .tdi_4 .tdc-columns{\r\n                    min-height: 0;\r\n                }.tdi_4,\r\n\t\t\t\t.tdi_4 .tdc-columns{\r\n\t\t\t\t    display: block;\r\n\t\t\t\t}.tdi_4 .tdc-columns{\r\n\t\t\t\t    width: 100%;\r\n\t\t\t\t}\n<\/style><div class=\"vc_column tdi_6  wpb_column vc_column_container tdc-column td-pb-span8\">\n<style scoped>\n\n\/* custom css *\/\n.tdi_6{\r\n                    vertical-align: baseline;\r\n                }.tdi_6 > .wpb_wrapper,\r\n\t\t\t\t.tdi_6 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    display: block;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    width: 100%;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper > .vc_row_inner{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t    height: auto;\r\n\t\t\t\t}\n<\/style><div class=\"wpb_wrapper\" ><div class=\"wpb_wrapper td_block_wrap vc_raw_html tdi_8 \"><div class=\"td-fix-index\"><!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>Professional QR Code Generator<\/title>\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n  <style>\n    \/* --- C\u1ea2I TI\u1ebeN GIAO DI\u1ec6N: B\u1ea2NG M\u00c0U & BI\u1ebeN --- *\/\n    :root {\n      --primary: #3b82f6; \/* M\u00e0u xanh hi\u1ec7n \u0111\u1ea1i h\u01a1n *\/\n      --primary-dark: #2563eb;\n      --secondary: #64748b;\n      --success: #10b981;\n      --danger: #ef4444;\n      --bg-main: #f0f4f8; \/* M\u00e0u n\u1ec1n trang s\u00e1ng h\u01a1n *\/\n      --bg-card: #ffffff;\n      --text-dark: #1e293b;\n      --text-light: #f8fafc;\n      --border: #cbd5e1;\n      \/* B\u00f3ng \u0111\u1ed5 m\u1ec1m m\u1ea1i h\u01a1n *\/\n      --shadow-sm: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);\n      --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06);\n      --radius: 12px;\n    }\n\n    body {\n      margin: 0;\n      font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n      background: var(--bg-main);\n      color: var(--text-dark);\n      line-height: 1.6;\n    }\n\n    \/* --- CONTAINER CH\u00cdNH --- *\/\n    .container {\n      max-width: 1100px;\n      margin: 40px auto;\n      display: grid;\n      grid-template-columns: 1.8fr 1.2fr; \/* \u0110i\u1ec1u ch\u1ec9nh t\u1ef7 l\u1ec7 c\u1ed9t *\/\n      gap: 40px;\n      background: var(--bg-card);\n      padding: 40px;\n      border-radius: 20px; \/* Bo g\u00f3c tr\u00f2n h\u01a1n *\/\n      box-shadow: var(--shadow-md);\n    }\n\n    h2, h3 {\n      color: var(--text-dark);\n      margin-top: 0;\n    }\n\n    \/* --- TABS NAVIGATION --- *\/\n    .tabs {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 10px;\n      margin-bottom: 25px;\n      padding-bottom: 15px;\n      border-bottom: 1px solid var(--border);\n    }\n\n    .tab {\n      padding: 10px 18px;\n      border-radius: var(--radius);\n      background: #e2e8f0;\n      color: var(--secondary);\n      cursor: pointer;\n      font-weight: 600;\n      font-size: 14px;\n      transition: all 0.3s ease;\n      display: flex;\n      align-items: center;\n      gap: 8px;\n    }\n\n    .tab:hover {\n      background: #cbd5e1;\n      color: var(--primary-dark);\n    }\n\n    .tab.active {\n      background: var(--primary);\n      color: var(--text-light);\n      box-shadow: var(--shadow-sm);\n    }\n\n    \/* --- FORM ELEMENTS --- *\/\n    label {\n      font-weight: 600;\n      font-size: 14px;\n      display: block;\n      margin-bottom: 8px;\n      margin-top: 15px;\n      color: var(--text-dark);\n    }\n\n    input, select {\n      width: 100%;\n      padding: 12px 15px;\n      border-radius: var(--radius);\n      border: 2px solid var(--border);\n      font-size: 15px;\n      margin-bottom: 10px;\n      box-sizing: border-box; \/* Quan tr\u1ecdng \u0111\u1ec3 padding kh\u00f4ng l\u00e0m v\u1ee1 layout *\/\n      transition: border-color 0.3s;\n    }\n\n    input:focus, select:focus {\n      outline: none;\n      border-color: var(--primary);\n    }\n\n    .field-group {\n      margin-bottom: 15px;\n    }\n\n    \/* --- CUSTOMIZATION SECTION --- *\/\n    .customization {\n      margin-top: 30px;\n      padding-top: 25px;\n      border-top: 1px solid var(--border);\n      background: #f8fafc;\n      padding: 20px;\n      border-radius: var(--radius);\n    }\n\n    .color-picker {\n      display: flex;\n      align-items: center;\n      gap: 20px;\n      margin-bottom: 20px;\n    }\n\n    .color-input-wrapper {\n      display: flex;\n      align-items: center;\n      gap: 10px;\n      background: white;\n      padding: 5px 10px;\n      border-radius: var(--radius);\n      border: 1px solid var(--border);\n    }\n\n    .color-picker input[type=\"color\"] {\n      width: 40px;\n      height: 40px;\n      padding: 0;\n      border: none;\n      border-radius: 8px;\n      cursor: pointer;\n      margin-bottom: 0;\n    }\n\n    .size-controls {\n        display: flex;\n        gap: 15px;\n        align-items: center;\n        background: white;\n        padding: 15px;\n        border-radius: var(--radius);\n        border: 1px solid var(--border);\n    }\n\n    .size-controls input[type=\"range\"] {\n        flex: 1;\n        margin: 0;\n        cursor: pointer;\n    }\n\n    .logo-upload-area {\n        background: white;\n        padding: 15px;\n        border-radius: var(--radius);\n        border: 1px solid var(--border);\n        margin-top: 15px;\n    }\n\n    .logo-preview-container {\n        display: flex;\n        align-items: center;\n        gap: 15px;\n        margin-top: 15px;\n    }\n\n    .logo-preview {\n      width: 60px;\n      height: 60px;\n      border-radius: var(--radius);\n      object-fit: contain;\n      background: var(--bg-main);\n      border: 2px solid var(--border);\n      display: none;\n    }\n\n    \/* --- QR OUTPUT AREA --- *\/\n    .qr-output-column {\n        position: sticky;\n        top: 40px;\n    }\n\n    .qr-box {\n      border: none;\n      border-radius: 20px;\n      padding: 30px;\n      min-height: 300px;\n      display: flex;\n      flex-direction: column;\n      align-items: center;\n      justify-content: center;\n      background: white;\n      position: relative;\n      transition: all 0.3s;\n      box-shadow: var(--shadow-md);\n      margin-bottom: 25px;\n    }\n\n    .qr-placeholder {\n      text-align: center;\n      color: var(--secondary);\n      opacity: 0.7;\n    }\n\n    .qr-placeholder i {\n      font-size: 64px;\n      margin-bottom: 15px;\n      display: block;\n      color: var(--primary);\n    }\n\n    canvas {\n      display: none;\n      max-width: 100%;\n      height: auto;\n      border-radius: 8px;\n    }\n\n    \/* --- BUTTONS --- *\/\n    .buttons-grid {\n        display: grid;\n        grid-template-columns: 1fr 1fr;\n        gap: 15px;\n        margin-bottom: 15px;\n    }\n    \n    .full-width-btn {\n        width: 100%;\n    }\n\n    button {\n      padding: 12px 24px;\n      background: var(--primary);\n      color: white;\n      border: none;\n      border-radius: var(--radius);\n      cursor: pointer;\n      font-size: 15px;\n      font-weight: 600;\n      transition: all 0.2s;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      box-shadow: var(--shadow-sm);\n    }\n\n    button:hover:not(:disabled) {\n      background: var(--primary-dark);\n      transform: translateY(-2px);\n      box-shadow: var(--shadow-md);\n    }\n\n    button:disabled {\n        background: var(--secondary);\n        cursor: not-allowed;\n        opacity: 0.7;\n    }\n\n    button.secondary {\n      background: white;\n      color: var(--primary);\n      border: 2px solid var(--primary);\n    }\n\n    button.secondary:hover {\n      background: #f0f7ff;\n    }\n    \n    button.danger-btn {\n        background: white;\n        color: var(--danger);\n        border: 2px solid var(--danger);\n        padding: 8px 15px;\n        font-size: 13px;\n    }\n    button.danger-btn:hover {\n        background: #fff0f0;\n    }\n\n    \/* --- MESSAGES & LOADING --- *\/\n    .message-area {\n        min-height: 25px;\n        margin-top: 10px;\n    }\n    .error-message { color: var(--danger); font-size: 14px; font-weight: 500; }\n    .success-message { color: var(--success); font-size: 14px; font-weight: 500; }\n\n    .loading {\n      position: absolute;\n      top: 0; left: 0; right: 0; bottom: 0;\n      background: rgba(255, 255, 255, 0.9);\n      display: none;\n      align-items: center;\n      justify-content: center;\n      flex-direction: column;\n      border-radius: 20px;\n      z-index: 10;\n      color: var(--primary);\n      font-weight: 600;\n    }\n\n    .spinner {\n      width: 50px;\n      height: 50px;\n      border: 5px solid rgba(59, 130, 246, 0.2);\n      border-radius: 50%;\n      border-top-color: var(--primary);\n      animation: spin 1s ease-in-out infinite;\n      margin-bottom: 15px;\n    }\n\n    @keyframes spin { to { transform: rotate(360deg); } }\n\n    \/* --- RESPONSIVE --- *\/\n    @media (max-width: 900px) {\n      .container {\n        grid-template-columns: 1fr;\n        margin: 20px;\n        padding: 25px;\n      }\n      .qr-output-column {\n          position: static;\n      }\n      .qr-box {\n          min-height: 250px;\n      }\n    }\n  <\/style>\n<\/head>\n<body>\n\n<div class=\"container\">\n  <div>\n    <h2><i class=\"fas fa-qrcode\"><\/i> QR Code Generator<\/h2>\n    \n    <div class=\"tabs\" id=\"typeTabs\"><\/div>\n\n    <div id=\"inputFields\">\n      <label id=\"inputLabel\" style=\"font-size: 16px; color: var(--primary);\">Enter content<\/label>\n      <div id=\"dynamicFields\"><\/div>\n      \n      <div class=\"message-area\">\n          <div id=\"error-message\" class=\"error-message\"><\/div>\n          <div id=\"success-message\" class=\"success-message\"><\/div>\n      <\/div>\n    <\/div>\n    \n    <div class=\"customization\">\n      <h3><i class=\"fas fa-sliders-h\"><\/i> Customization<\/h3>\n      \n      <div class=\"color-picker\">\n        <div>\n          <label>Foreground<\/label>\n          <div class=\"color-input-wrapper\">\n              <input type=\"color\" id=\"fgColor\" value=\"#000000\">\n              <span id=\"fgColorValue\">#000000<\/span>\n          <\/div>\n        <\/div>\n        <div>\n          <label>Background<\/label>\n           <div class=\"color-input-wrapper\">\n              <input type=\"color\" id=\"bgColor\" value=\"#ffffff\">\n              <span id=\"bgColorValue\">#ffffff<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <label>Resolution (px)<\/label>\n      <div class=\"size-controls\">\n        <i class=\"fas fa-image\" style=\"color: var(--secondary);\"><\/i>\n        <input type=\"range\" id=\"sizeSlider\" min=\"100\" max=\"1000\" step=\"50\" value=\"300\">\n        <span id=\"sizeValue\" style=\"font-weight: bold; min-width: 50px; text-align: right;\">300px<\/span>\n      <\/div>\n      \n      <div class=\"logo-upload-area\">\n        <label style=\"margin-top:0;\"><i class=\"fas fa-cloud-upload-alt\"><\/i> Upload Logo (Optional)<\/label>\n        <input type=\"file\" id=\"logoUpload\" accept=\"image\/png, image\/jpeg, image\/svg+xml\" style=\"margin-bottom: 0;\">\n        <small style=\"color: var(--secondary); display: block; margin-top: 5px;\">Best results with square, transparent PNGs.<\/small>\n        \n        <div class=\"logo-preview-container\" id=\"logoPreviewContainer\" style=\"display: none;\">\n            <img id=\"logoPreview\" class=\"logo-preview\">\n            <button onclick=\"removeLogo()\" class=\"danger-btn\" id=\"removeLogoBtn\">\n              <i class=\"fas fa-trash-alt\"><\/i> Remove Logo\n            <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n  \n  <div class=\"qr-output-column\">\n    <div class=\"qr-box\">\n      <div id=\"qrPlaceholder\" class=\"qr-placeholder\">\n        <i class=\"fas fa-cube fa-spin\" style=\"animation-duration: 3s;\"><\/i>\n        <div>Select type & enter data to generate.<\/div>\n      <\/div>\n      <canvas id=\"qrCanvas\"><\/canvas>\n      <div class=\"loading\" id=\"loadingIndicator\">\n        <div class=\"spinner\"><\/div>\n        <div>Generating High-Quality QR...<\/div>\n      <\/div>\n    <\/div>\n    \n    <div class=\"buttons-grid\">\n      <button onclick=\"downloadQR('png')\" id=\"downloadPngBtn\" disabled>\n        <i class=\"fas fa-download\"><\/i> Download PNG\n      <\/button>\n      <button onclick=\"downloadSVG()\" id=\"downloadSvgBtn\" class=\"secondary\" disabled>\n        <i class=\"fas fa-vector-square\"><\/i> Download SVG\n      <\/button>\n    <\/div>\n     <button onclick=\"saveSettings()\" class=\"secondary full-width-btn\">\n        <i class=\"fas fa-save\"><\/i> Save Current Settings\n    <\/button>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/qrcode\/build\/qrcode.min.js\"><\/script>\n\n<script>\n  \/\/ --- C\u1ea4U H\u00ccNH D\u1eee LI\u1ec6U ---\n  \/\/ \u0110\u1ecbnh ngh\u0129a c\u00e1c lo\u1ea1i QR code v\u00e0 c\u00e1c tr\u01b0\u1eddng nh\u1eadp li\u1ec7u t\u01b0\u01a1ng \u1ee9ng\n  const qrTypes = [\n    { type: 'url', label: 'Website URL', icon: 'link', placeholder: 'https:\/\/yourwebsite.com' },\n    { type: 'text', label: 'Plain Text', icon: 'align-left', placeholder: 'Enter text message here...' },\n    { type: 'email', label: 'Email', icon: 'envelope', fields: [\n      { id: 'emailAddress', placeholder: 'recipient@example.com', label: 'Email Address', required: true },\n      { id: 'emailSubject', placeholder: 'Summary of the email', label: 'Subject' },\n      { id: 'emailBody', placeholder: 'Content of the email', label: 'Message Body', type: 'textarea' }\n    ]},\n    { type: 'wifi', label: 'WiFi Access', icon: 'wifi', fields: [\n      { id: 'wifiSsid', placeholder: 'Network Name (SSID)', label: 'Network Name', required: true },\n      { id: 'wifiPassword', placeholder: 'Network Password', label: 'Password', type: 'password' },\n      { id: 'wifiType', label: 'Security Type', type: 'select', options: ['WPA\/WPA2', 'WEP', 'None'] }\n    ]},\n    { type: 'vcard', label: 'Digital Card (vCard)', icon: 'address-card', fields: [\n      { id: 'vcardFirstName', placeholder: 'John', label: 'First Name', required: true },\n      { id: 'vcardLastName', placeholder: 'Doe', label: 'Last Name', required: true },\n      { id: 'vcardPhone', placeholder: '+1 555 123 4567', label: 'Mobile Phone' },\n      { id: 'vcardEmail', placeholder: 'john.doe@work.com', label: 'Email Address' },\n      { id: 'vcardOrg', placeholder: 'Company Name Ltd.', label: 'Organization\/Company' },\n      { id: 'vcardTitle', placeholder: 'Software Engineer', label: 'Job Title' },\n      { id: 'vcardUrl', placeholder: 'https:\/\/portfolio.com', label: 'Website' }\n    ]},\n    { type: 'tel', label: 'Phone Call', icon: 'phone', placeholder: '+15551234567' },\n    { type: 'sms', label: 'Send SMS', icon: 'comment-dots', fields: [\n      { id: 'smsNumber', placeholder: '+15551234567', label: 'Phone Number', required: true },\n      { id: 'smsBody', placeholder: 'I heard about your services...', label: 'Message' }\n    ]},\n     { type: 'whatsapp', label: 'WhatsApp', icon: 'brands fa-whatsapp', placeholder: '+15551234567' },\n  ];\n\n  \/\/ C\u1ea5u h\u00ecnh m\u1eb7c \u0111\u1ecbnh\n  let config = {\n    currentType: 'url',\n    fgColor: '#000000',\n    bgColor: '#ffffff',\n    size: 300,\n    logo: null\n  };\n\n  \/\/ --- DOM ELEMENTS ---\n  const tabContainer = document.getElementById('typeTabs');\n  const dynamicFields = document.getElementById('dynamicFields');\n  const errorMessage = document.getElementById('error-message');\n  const successMessage = document.getElementById('success-message');\n  const qrPlaceholder = document.getElementById('qrPlaceholder');\n  const qrCanvas = document.getElementById('qrCanvas');\n  const loadingIndicator = document.getElementById('loadingIndicator');\n  const downloadPngBtn = document.getElementById('downloadPngBtn');\n  const downloadSvgBtn = document.getElementById('downloadSvgBtn');\n  const fgColorPicker = document.getElementById('fgColor');\n  const bgColorPicker = document.getElementById('bgColor');\n  const sizeSlider = document.getElementById('sizeSlider');\n  const sizeValueDisplay = document.getElementById('sizeValue');\n  const logoUpload = document.getElementById('logoUpload');\n  const logoPreview = document.getElementById('logoPreview');\n  const logoPreviewContainer = document.getElementById('logoPreviewContainer');\n\n  \/\/ --- KH\u1edeI T\u1ea0O \u1ee8NG D\u1ee4NG ---\n  function init() {\n    createTabs();\n    setupEventListeners();\n    loadSettings(); \/\/ T\u1ea3i c\u00e0i \u0111\u1eb7t \u0111\u00e3 l\u01b0u\n    updateQR(); \/\/ T\u1ea1o QR l\u1ea7n \u0111\u1ea7u\n  }\n\n  \/\/ T\u1ea1o c\u00e1c tab \u0111i\u1ec1u h\u01b0\u1edbng\n  function createTabs() {\n    qrTypes.forEach((qr, index) => {\n      const tab = document.createElement('div');\n      \/\/ K\u00edch ho\u1ea1t tab \u0111\u1ea7u ti\u00ean ho\u1eb7c tab \u0111\u01b0\u1ee3c l\u01b0u trong config\n      tab.className = 'tab' + (qr.type === config.currentType ? ' active' : '');\n      tab.innerHTML = `<i class=\"fas fa-${qr.icon}\"><\/i> ${qr.label}`;\n      tab.onclick = () => switchTab(qr.type, tab);\n      tabContainer.appendChild(tab);\n    });\n  }\n\n  \/\/ Chuy\u1ec3n \u0111\u1ed5i gi\u1eefa c\u00e1c tab\n  function switchTab(type, clickedTab) {\n    document.querySelectorAll('.tab').forEach(t => t.classList.remove('active'));\n    clickedTab.classList.add('active');\n    config.currentType = type;\n    createInputFields();\n    clearMessages();\n    hideQR();\n    updateQR(); \/\/ T\u1ef1 \u0111\u1ed9ng c\u1eadp nh\u1eadt khi chuy\u1ec3n tab\n  }\n\n  \/\/ T\u1ea1o c\u00e1c tr\u01b0\u1eddng nh\u1eadp li\u1ec7u d\u1ef1a tr\u00ean lo\u1ea1i QR \u0111\u00e3 ch\u1ecdn\n  function createInputFields() {\n    dynamicFields.innerHTML = '';\n    const typeConfig = qrTypes.find(t => t.type === config.currentType);\n    \n    if (typeConfig.fields) {\n      \/\/ T\u1ea1o nhi\u1ec1u tr\u01b0\u1eddng (v\u00ed d\u1ee5: vCard, WiFi)\n      typeConfig.fields.forEach(field => {\n        const fieldGroup = document.createElement('div');\n        fieldGroup.className = 'field-group';\n        \n        const label = document.createElement('label');\n        label.innerHTML = `${field.label} ${field.required ? '<span style=\"color:var(--danger)\">*<\/span>' : ''}`;\n        fieldGroup.appendChild(label);\n        \n        let input;\n        if (field.type === 'select') {\n          input = document.createElement('select');\n          field.options.forEach(option => {\n            const opt = document.createElement('option');\n            opt.value = option;\n            opt.textContent = option;\n            input.appendChild(opt);\n          });\n        } else if (field.type === 'textarea') {\n             input = document.createElement('textarea');\n             input.rows = 3;\n             input.style.width = '100%';\n             input.style.padding = '12px 15px';\n             input.style.borderRadius = 'var(--radius)';\n             input.style.border = '2px solid var(--border)';\n             input.style.fontFamily = 'inherit';\n        } else {\n          input = document.createElement('input');\n          input.type = field.type || 'text';\n        }\n        input.id = field.id;\n        input.placeholder = field.placeholder || '';\n        if (field.required) input.required = true;\n        \n        fieldGroup.appendChild(input);\n        dynamicFields.appendChild(fieldGroup);\n      });\n    } else {\n      \/\/ T\u1ea1o m\u1ed9t tr\u01b0\u1eddng nh\u1eadp li\u1ec7u \u0111\u01a1n (v\u00ed d\u1ee5: URL, Text)\n      const input = document.createElement('input');\n      input.type = 'text';\n      input.id = 'qrDataSingle';\n      input.placeholder = typeConfig.placeholder;\n      dynamicFields.appendChild(input);\n      \/\/ T\u1ef1 \u0111\u1ed9ng focus v\u00e0o \u00f4 nh\u1eadp li\u1ec7u \u0111\u01a1n\n      setTimeout(() => input.focus(), 100);\n    }\n    \n    \/\/ Th\u00eam s\u1ef1 ki\u1ec7n l\u1eafng nghe nh\u1eadp li\u1ec7u (s\u1eed d\u1ee5ng debounce \u0111\u1ec3 t\u1ed1i \u01b0u hi\u1ec7u su\u1ea5t)\n    document.querySelectorAll('#dynamicFields input, #dynamicFields select, #dynamicFields textarea').forEach(el => {\n      el.addEventListener('input', debounce(updateQR, 400));\n    });\n  }\n\n  \/\/ Thi\u1ebft l\u1eadp c\u00e1c s\u1ef1 ki\u1ec7n cho c\u00e1c n\u00fat \u0111i\u1ec1u khi\u1ec3n\n  function setupEventListeners() {\n    \/\/ Ch\u1ecdn m\u00e0u s\u1eafc\n    fgColorPicker.addEventListener('input', (e) => {\n      config.fgColor = e.target.value;\n      document.getElementById('fgColorValue').textContent = e.target.value;\n      updateQR();\n    });\n    \n    bgColorPicker.addEventListener('input', (e) => {\n      config.bgColor = e.target.value;\n      document.getElementById('bgColorValue').textContent = e.target.value;\n      updateQR();\n    });\n    \n    \/\/ \u0110i\u1ec1u ch\u1ec9nh k\u00edch th\u01b0\u1edbc\n    sizeSlider.addEventListener('input', (e) => {\n      config.size = parseInt(e.target.value);\n      sizeValueDisplay.textContent = config.size + 'px';\n      \/\/ S\u1eed d\u1ee5ng debounce l\u00e2u h\u01a1n cho slider \u0111\u1ec3 tr\u00e1nh lag\n      debounce(() => updateQR(), 300)();\n    });\n    \n    \/\/ Upload Logo\n    logoUpload.addEventListener('change', handleLogoUpload);\n  }\n\n  \/\/ X\u1eed l\u00fd khi ng\u01b0\u1eddi d\u00f9ng upload file logo\n  function handleLogoUpload(e) {\n    const file = e.target.files[0];\n    if (!file) return;\n    \n    \/\/ Ki\u1ec3m tra lo\u1ea1i file\n    if (!file.type.match('image.*')) {\n      showError('File isn\\'t an image. Please choose PNG, JPG or SVG.');\n      return;\n    }\n\n     \/\/ Ki\u1ec3m tra k\u00edch th\u01b0\u1edbc file (v\u00ed d\u1ee5: gi\u1edbi h\u1ea1n 2MB \u0111\u1ec3 tr\u00e1nh l\u1ed7i localStorage)\n     if (file.size > 2 * 1024 * 1024) {\n         showError('Image is too large (max 2MB). Large images may fail to save settings.');\n         \/\/ V\u1eabn cho ph\u00e9p d\u00f9ng, nh\u01b0ng c\u1ea3nh b\u00e1o\n     }\n    \n    const reader = new FileReader();\n    reader.onload = function(event) {\n      \/\/ Hi\u1ec3n th\u1ecb preview logo\n      logoPreview.src = event.target.result;\n      logoPreview.style.display = 'block';\n      logoPreviewContainer.style.display = 'flex';\n      \n      \/\/ L\u01b0u d\u1eef li\u1ec7u base64 c\u1ee7a logo v\u00e0o config\n      config.logo = event.target.result;\n      \n      \/\/ Regenerate QR code\n      updateQR();\n      showSuccess('Logo uploaded successfully!');\n    };\n    reader.readAsDataURL(file);\n  }\n\n  \/\/ X\u00f3a logo \u0111\u00e3 upload\n  function removeLogo() {\n    logoPreview.src = '';\n    logoPreviewContainer.style.display = 'none';\n    logoUpload.value = ''; \/\/ Reset file input\n    config.logo = null;\n    updateQR();\n    showSuccess('Logo removed.');\n  }\n\n  \/\/ --- LOGIC X\u1eec L\u00dd D\u1eee LI\u1ec6U ---\n\n  \/\/ Ki\u1ec3m tra t\u00ednh h\u1ee3p l\u1ec7 c\u1ee7a d\u1eef li\u1ec7u \u0111\u1ea7u v\u00e0o\n  function validateInput() {\n    const typeConfig = qrTypes.find(t => t.type === config.currentType);\n    \n    if (typeConfig.fields) {\n      \/\/ Validate c\u00e1c tr\u01b0\u1eddng ph\u1ee9c t\u1ea1p\n      for (const field of typeConfig.fields) {\n        if (field.required) {\n          const input = document.getElementById(field.id);\n          if (!input.value.trim()) {\n            return `Please fill in the required field: ${field.label}`;\n          }\n        }\n        \/\/ C\u00f3 th\u1ec3 th\u00eam validate email\/s\u1ed1 \u0111i\u1ec7n tho\u1ea1i c\u1ee5 th\u1ec3 \u1edf \u0111\u00e2y n\u1ebfu c\u1ea7n\n      }\n      return null; \/\/ Kh\u00f4ng c\u00f3 l\u1ed7i\n    } else {\n      \/\/ Validate tr\u01b0\u1eddng \u0111\u01a1n\n      const input = document.getElementById('qrDataSingle');\n      const value = input.value.trim();\n      if (!value) return 'Please enter content to generate QR Code.';\n      \n      \/\/ Validate c\u01a1 b\u1ea3n cho URL v\u00e0 Email \u0111\u01a1n\n      if (config.currentType === 'url' && !\/^(http|https):\\\/\\\/[^ \"]+$\/.test(value)) {\n          \/\/ T\u1ef1 \u0111\u1ed9ng th\u00eam https:\/\/ n\u1ebfu thi\u1ebfu\n          if (\/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\\.[a-zA-Z]{2,})+$\/.test(value)) {\n               input.value = 'https:\/\/' + value;\n          } else {\n              return 'Please enter a valid URL (e.g., https:\/\/example.com)';\n          }\n      }\n       if (config.currentType === 'email' && !\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(value)) {\n          return 'Please enter a valid email address.';\n      }\n\n      return null;\n    }\n  }\n\n  \/\/ \u0110\u1ecbnh d\u1ea1ng d\u1eef li\u1ec7u th\u00f4 th\u00e0nh chu\u1ed7i chu\u1ea9n cho QR Code\n  function formatData() {\n    const type = config.currentType;\n\n    \/\/ X\u1eed l\u00fd c\u00e1c lo\u1ea1i tr\u01b0\u1eddng ph\u1ee9c t\u1ea1p\n    if (['wifi', 'vcard', 'email', 'sms'].includes(type)) {\n      switch(type) {\n        case 'email':\n          const eAddr = getVal('emailAddress');\n          const eSub = getVal('emailSubject');\n          const eBody = getVal('emailBody');\n          return `mailto:${eAddr}?subject=${encode(eSub)}&body=${encode(eBody)}`;\n          \n        case 'sms':\n          const sNum = getVal('smsNumber');\n          const sBody = getVal('smsBody');\n          \/\/ \u0110\u1ecbnh d\u1ea1ng SMS chu\u1ea9n qu\u1ed1c t\u1ebf\n          return `sms:${sNum}${sBody ? (navigator.userAgent.match(\/iPhone|iPad\/i) ? '&' : '?') + `body=${encode(sBody)}` : ''}`;\n          \n        case 'wifi':\n          const ssid = getVal('wifiSsid');\n          const pass = getVal('wifiPassword');\n          const enc = getVal('wifiType');\n          \/\/ Escape c\u00e1c k\u00fd t\u1ef1 \u0111\u1eb7c bi\u1ec7t trong SSID v\u00e0 Password\n          const escapeWifi = (str) => str.replace(\/[\\\\;,\":]\/g, '\\\\$&');\n          let wifiStr = `WIFI:S:${escapeWifi(ssid)};`;\n          if(enc !== 'None') wifiStr += `T:${enc};P:${escapeWifi(pass)};`;\n          else wifiStr += `T:nopass;`;\n          wifiStr += ';';\n          return wifiStr;\n          \n        case 'vcard':\n            \/\/ S\u1eed d\u1ee5ng vCard phi\u00ean b\u1ea3n 3.0 \u0111\u1ec3 t\u01b0\u01a1ng th\u00edch t\u1ed1t nh\u1ea5t\n            let vcard = 'BEGIN:VCARD\\nVERSION:3.0\\n';\n            vcard += `N:${getVal('vcardLastName')};${getVal('vcardFirstName')};;;\\n`;\n            vcard += `FN:${getVal('vcardFirstName')} ${getVal('vcardLastName')}\\n`;\n            if(getVal('vcardOrg')) vcard += `ORG:${getVal('vcardOrg')}\\n`;\n            if(getVal('vcardTitle')) vcard += `TITLE:${getVal('vcardTitle')}\\n`;\n            if(getVal('vcardPhone')) vcard += `TEL;TYPE=CELL:${getVal('vcardPhone')}\\n`;\n            if(getVal('vcardEmail')) vcard += `EMAIL:${getVal('vcardEmail')}\\n`;\n            if(getVal('vcardUrl')) vcard += `URL:${getVal('vcardUrl')}\\n`;\n            vcard += 'END:VCARD';\n            return vcard;\n      }\n    } \n    \/\/ X\u1eed l\u00fd c\u00e1c lo\u1ea1i tr\u01b0\u1eddng \u0111\u01a1n\n    else {\n      const val = document.getElementById('qrDataSingle').value.trim();\n      switch(type) {\n        case 'tel': return `tel:${val}`;\n        case 'whatsapp':\n             \/\/ Lo\u1ea1i b\u1ecf c\u00e1c k\u00fd t\u1ef1 kh\u00f4ng ph\u1ea3i s\u1ed1 \u0111\u1ec3 t\u1ea1o link whatsapp\n             const cleanNum = val.replace(\/[^\\d]\/g, '');\n             return `https:\/\/wa.me\/${cleanNum}`;\n        default: return val; \/\/ url, text\n      }\n    }\n  }\n\n  \/\/ Helpers \u0111\u1ec3 l\u1ea5y gi\u00e1 tr\u1ecb v\u00e0 encode\n  const getVal = (id) => document.getElementById(id) ? document.getElementById(id).value.trim() : '';\n  const encode = (str) => encodeURIComponent(str);\n\n  \/\/ --- H\u00c0M T\u1ea0O QR CODE CH\u00cdNH ---\n  function updateQR() {\n    const error = validateInput();\n    if (error) {\n      \/\/ N\u1ebfu \u0111ang nh\u1eadp li\u1ec7u m\u00e0 c\u00f3 l\u1ed7i (v\u00ed d\u1ee5 ch\u01b0a \u0111i\u1ec1n h\u1ebft) th\u00ec ch\u1ec9 \u1ea9n QR \u0111i, kh\u00f4ng b\u00e1o l\u1ed7i \u0111\u1ecf ngay\n      if (document.activeElement && (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'TEXTAREA')) {\n           hideQR();\n           clearMessages();\n      } else {\n          showError(error);\n          hideQR();\n      }\n      return;\n    }\n    \n    const data = formatData();\n    if (!data) { hideQR(); return; }\n    \n    showLoading();\n    clearMessages();\n    \n    \/\/ S\u1eed d\u1ee5ng setTimeout \u0111\u1ec3 UI kh\u00f4ng b\u1ecb \u0111\u01a1 khi \u0111ang t\u00ednh to\u00e1n QR\n    setTimeout(() => {\n      generateQRCanvas(data);\n    }, 50);\n  }\n\n  \/\/ V\u1ebd QR Code l\u00ean Canvas\n  function generateQRCanvas(data) {\n    \/\/ \u0110\u1eb7t k\u00edch th\u01b0\u1edbc canvas ch\u00ednh x\u00e1c theo c\u1ea5u h\u00ecnh \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o \u0111\u1ed9 n\u00e9t\n    qrCanvas.width = config.size;\n    qrCanvas.height = config.size;\n    \n    const options = {\n      width: config.size,\n      height: config.size,\n      color: {\n        dark: config.fgColor,\n        light: config.bgColor\n      },\n      margin: 1, \/\/ Vi\u1ec1n nh\u1ecf \u0111\u1ec3 tr\u00f4ng \u0111\u1eb9p h\u01a1n\n      \/\/ --- C\u1ef0C K\u1ef2 QUAN TR\u1eccNG: M\u1ee9c \u0111\u1ed9 s\u1eeda l\u1ed7i cao \u0111\u1ec3 h\u1ed7 tr\u1ee3 Logo ---\n      errorCorrectionLevel: 'H' \n    };\n    \n    QRCode.toCanvas(qrCanvas, data, options, (error) => {\n      if (error) {\n        console.error(error);\n        showError('Failed to generate QR code. Try shorter content.');\n        hideLoading();\n        hideQR();\n        return;\n      }\n      \n      \/\/ N\u1ebfu c\u00f3 logo, v\u1ebd \u0111\u00e8 l\u00ean QR code\n      if (config.logo) {\n        drawLogoOnCanvas();\n      } else {\n        \/\/ N\u1ebfu kh\u00f4ng c\u00f3 logo, hi\u1ec3n th\u1ecb k\u1ebft qu\u1ea3 ngay\n        finalizeQRGeneration();\n      }\n    });\n  }\n\n  \/\/ V\u1ebd logo v\u00e0o trung t\u00e2m canvas\n  function drawLogoOnCanvas() {\n    const ctx = qrCanvas.getContext('2d');\n    const img = new Image();\n    img.onload = () => {\n      \/\/ T\u00ednh to\u00e1n k\u00edch th\u01b0\u1edbc logo (kho\u1ea3ng 22% k\u00edch th\u01b0\u1edbc QR l\u00e0 an to\u00e0n cho m\u1ee9c l\u1ed7i H)\n      const logoSize = config.size * 0.22; \n      const center = (config.size - logoSize) \/ 2;\n      \n      \/\/ 1. V\u1ebd m\u1ed9t h\u00ecnh vu\u00f4ng n\u1ec1n tr\u1eafng (ho\u1eb7c m\u00e0u n\u1ec1n \u0111\u00e3 ch\u1ecdn) b\u00ean d\u01b0\u1edbi logo \u0111\u1ec3 l\u00e0m n\u1ed5i b\u1eadt\n      ctx.fillStyle = config.bgColor;\n      \/\/ V\u1ebd r\u1ed9ng h\u01a1n logo m\u1ed9t ch\u00fat \u0111\u1ec3 t\u1ea1o vi\u1ec1n\n      const borderSize = config.size * 0.015; \/\/ vi\u1ec1n d\u00e0y kho\u1ea3ng 1.5%\n      ctx.fillRect(center - borderSize, center - borderSize, logoSize + (borderSize*2), logoSize + (borderSize*2));\n\n       \/\/ T\u00f9y ch\u1ecdn: V\u1ebd th\u00eam m\u1ed9t vi\u1ec1n m\u1ecfng m\u00e0u tr\u00f9ng v\u1edbi m\u00e0u QR \u0111\u1ec3 tr\u00f4ng s\u1eafc n\u00e9t h\u01a1n\n       \/\/ ctx.strokeStyle = config.fgColor;\n       \/\/ ctx.lineWidth = borderSize \/ 2;\n       \/\/ ctx.strokeRect(center - borderSize, center - borderSize, logoSize + (borderSize*2), logoSize + (borderSize*2));\n      \n      \/\/ 2. V\u1ebd h\u00ecnh \u1ea3nh logo l\u00ean tr\u00ean\n      \/\/ S\u1eed d\u1ee5ng t\u00ednh n\u0103ng l\u00e0m m\u01b0\u1ee3t \u1ea3nh ch\u1ea5t l\u01b0\u1ee3ng cao c\u1ee7a canvas\n      ctx.imageSmoothingEnabled = true;\n      ctx.imageSmoothingQuality = 'high';\n      ctx.drawImage(img, center, center, logoSize, logoSize);\n      \n      finalizeQRGeneration();\n    };\n    img.onerror = () => {\n         showError(\"Could not load logo image.\");\n         finalizeQRGeneration(); \/\/ V\u1eabn hi\u1ec7n QR d\u00f9 l\u1ed7i logo\n    }\n    \/\/ S\u1eed d\u1ee5ng crossOrigin \u0111\u1ec3 tr\u00e1nh l\u1ed7i \"tainted canvas\" khi t\u1ea3i \u1ea3nh t\u1eeb ngu\u1ed3n kh\u00e1c (n\u1ebfu c\u00f3)\n    img.setAttribute('crossOrigin', 'anonymous'); \n    img.src = config.logo;\n  }\n\n  \/\/ Ho\u00e0n t\u1ea5t qu\u00e1 tr\u00ecnh t\u1ea1o v\u00e0 hi\u1ec3n th\u1ecb\n  function finalizeQRGeneration() {\n    hideLoading();\n    showQR();\n    \/\/ K\u00edch ho\u1ea1t c\u00e1c n\u00fat t\u1ea3i xu\u1ed1ng\n    downloadPngBtn.disabled = false;\n    downloadSvgBtn.disabled = false;\n  }\n\n  \/\/ --- C\u00c1C H\u00c0M UI TI\u1ec6N \u00cdCH ---\n  const showLoading = () => loadingIndicator.style.display = 'flex';\n  const hideLoading = () => loadingIndicator.style.display = 'none';\n  \n  const showQR = () => {\n    qrPlaceholder.style.display = 'none';\n    qrCanvas.style.display = 'block';\n    \/\/ Cu\u1ed9n nh\u1eb9 xu\u1ed1ng tr\u00ean mobile \u0111\u1ec3 th\u1ea5y k\u1ebft qu\u1ea3\n    if(window.innerWidth < 900) {\n        qrCanvas.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n    }\n  }\n  \n  const hideQR = () => {\n    qrPlaceholder.style.display = 'flex';\n    qrCanvas.style.display = 'none';\n    downloadPngBtn.disabled = true;\n    downloadSvgBtn.disabled = true;\n  }\n  \n  const showError = (msg) => { errorMessage.textContent = msg; successMessage.textContent = ''; }\n  const showSuccess = (msg) => { successMessage.textContent = msg; errorMessage.textContent = ''; }\n  const clearMessages = () => { errorMessage.textContent = ''; successMessage.textContent = ''; }\n\n  \/\/ H\u00e0m debounce \u0111\u1ec3 tr\u00e1nh g\u1ecdi h\u00e0m li\u00ean t\u1ee5c khi g\u00f5 ph\u00edm\n  function debounce(func, wait) {\n    let timeout;\n    return function(...args) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => func.apply(this, args), wait);\n    };\n  }\n\n  \/\/ --- CH\u1ee8C N\u0102NG T\u1ea2I XU\u1ed0NG & L\u01afU ---\n\n  \/\/ T\u1ea3i xu\u1ed1ng file PNG t\u1eeb Canvas\n  function downloadQR() {\n    if (qrCanvas.style.display === 'none') return;\n    \n    const link = document.createElement('a');\n    \/\/ T\u1ea1o t\u00ean file d\u1ef1a tr\u00ean lo\u1ea1i v\u00e0 th\u1eddi gian\n    link.download = `qrcode-${config.currentType}-${new Date().getTime()}.png`;\n    \/\/ Chuy\u1ec3n \u0111\u1ed5i canvas th\u00e0nh URL h\u00ecnh \u1ea3nh ch\u1ea5t l\u01b0\u1ee3ng cao nh\u1ea5t (1.0)\n    link.href = qrCanvas.toDataURL('image\/png', 1.0);\n    link.click();\n    showSuccess('PNG downloaded successfully!');\n  }\n\n  \/\/ --- T\u00cdNH N\u0102NG M\u1edaI: T\u1ea3i xu\u1ed1ng SVG ---\n  function downloadSVG() {\n      const error = validateInput();\n      if(error) return;\n      const data = formatData();\n      if(!data) return;\n\n      showLoading();\n\n      \/\/ C\u1ea5u h\u00ecnh cho SVG (kh\u00f4ng c\u1ea7n margin v\u00ec SVG c\u00f3 th\u1ec3 scale)\n      const options = {\n          color: { dark: config.fgColor, light: config.bgColor },\n          margin: 0,\n          errorCorrectionLevel: 'H'\n      };\n\n      \/\/ S\u1eed d\u1ee5ng h\u00e0m toString \u0111\u1ec3 t\u1ea1o m\u00e3 SVG\n      QRCode.toString(data, options, (err, svgString) => {\n          hideLoading();\n          if(err) {\n              showError(\"Could not generate SVG.\");\n              return;\n          }\n\n          \/\/ N\u1ebfu c\u00f3 logo, ta c\u1ea7n ch\u00e8n th\u1ee7 c\u00f4ng th\u1ebb <image> v\u00e0o trong chu\u1ed7i SVG\n          \/\/ \u0110\u00e2y l\u00e0 k\u1ef9 thu\u1eadt n\u00e2ng cao v\u00ec th\u01b0 vi\u1ec7n kh\u00f4ng h\u1ed7 tr\u1ee3 ch\u00e8n logo v\u00e0o SVG tr\u1ef1c ti\u1ebfp\n          if(config.logo) {\n              \/\/ 1. Ph\u00e2n t\u00edch chu\u1ed7i SVG \u0111\u1ec3 t\u00ecm v\u1ecb tr\u00ed ch\u00e8n\n              const closingSvgTag = '<\/svg>';\n              const svgBodyEndIndex = svgString.indexOf(closingSvgTag);\n              if(svgBodyEndIndex === -1) return;\n\n              \/\/ 2. T\u00ednh to\u00e1n v\u1ecb tr\u00ed v\u00e0 k\u00edch th\u01b0\u1edbc cho logo trong kh\u00f4ng gian SVG\n              \/\/ SVG m\u1eb7c \u0111\u1ecbnh \u0111\u01b0\u1ee3c t\u1ea1o ra v\u1edbi viewbox, ta gi\u1ea3 \u0111\u1ecbnh k\u00edch th\u01b0\u1edbc c\u01a1 s\u1edf l\u00e0 100 \u0111\u01a1n v\u1ecb \u0111\u1ec3 d\u1ec5 t\u00ednh\n              const baseSize = 100; \/\/ K\u00edch th\u01b0\u1edbc gi\u1ea3 \u0111\u1ecbnh c\u1ee7a viewbox SVG\n              const logoSize = baseSize * 0.22; \/\/ 22%\n              const center = (baseSize - logoSize) \/ 2;\n\n              \/\/ 3. T\u1ea1o th\u1ebb <image> SVG ch\u1ee9a logo (base64)\n              \/\/ L\u01b0u \u00fd: C\u1ea7n th\u00eam thu\u1ed9c t\u00ednh preserveAspectRatio \u0111\u1ec3 kh\u00f4ng b\u1ecb m\u00e9o \u1ea3nh\n              const svgImageTag = `<image href=\"${config.logo}\" height=\"${logoSize}\" width=\"${logoSize}\" x=\"${center}\" y=\"${center}\" preserveAspectRatio=\"xMidYMid meet\"\/>`;\n              \n              \/\/ 4. Ch\u00e8n th\u1ebb \u1ea3nh v\u00e0o tr\u01b0\u1edbc th\u1ebb \u0111\u00f3ng <\/svg>\n              svgString = svgString.substring(0, svgBodyEndIndex) + svgImageTag + svgString.substring(svgBodyEndIndex);\n          }\n\n          \/\/ T\u1ea1o Blob t\u1eeb chu\u1ed7i SVG v\u00e0 t\u1ea3i xu\u1ed1ng\n          const blob = new Blob([svgString], {type: 'image\/svg+xml'});\n          const url = URL.createObjectURL(blob);\n          const link = document.createElement('a');\n          link.download = `qrcode-${config.currentType}-${new Date().getTime()}.svg`;\n          link.href = url;\n          link.click();\n          URL.revokeObjectURL(url); \/\/ Gi\u1ea3i ph\u00f3ng b\u1ed9 nh\u1edb\n          showSuccess('SVG downloaded successfully!');\n      });\n  }\n\n  \/\/ L\u01b0u c\u00e0i \u0111\u1eb7t v\u00e0o LocalStorage (AN TO\u00c0N H\u01a0N)\n  function saveSettings() {\n    try {\n      const configToSave = JSON.stringify(config);\n      localStorage.setItem('qrConfigApp', configToSave);\n      showSuccess('Settings saved successfully! They will load next time.');\n    } catch (e) {\n      console.error('Storage failed:', e);\n      \/\/ Ki\u1ec3m tra l\u1ed7i v\u01b0\u1ee3t qu\u00e1 dung l\u01b0\u1ee3ng (th\u01b0\u1eddng do logo base64 qu\u00e1 l\u1edbn)\n      if (e.name === 'QuotaExceededError' || e.code === 22) {\n         showError('Cannot save settings: The logo image is too large for browser storage.');\n      } else {\n         showError('Failed to save settings to local storage due to an unknown error.');\n      }\n    }\n  }\n\n  \/\/ T\u1ea3i c\u00e0i \u0111\u1eb7t t\u1eeb LocalStorage\n  function loadSettings() {\n    try {\n      const savedConfig = localStorage.getItem('qrConfigApp');\n      if (savedConfig) {\n        const parsed = JSON.parse(savedConfig);\n        \/\/ Merge c\u00e0i \u0111\u1eb7t \u0111\u00e3 l\u01b0u v\u00e0o config hi\u1ec7n t\u1ea1i\n        config = { ...config, ...parsed };\n        \n        \/\/ C\u1eadp nh\u1eadt UI theo config \u0111\u00e3 t\u1ea3i\n        fgColorPicker.value = config.fgColor;\n        document.getElementById('fgColorValue').textContent = config.fgColor;\n        \n        bgColorPicker.value = config.bgColor;\n        document.getElementById('bgColorValue').textContent = config.bgColor;\n\n        sizeSlider.value = config.size;\n        sizeValueDisplay.textContent = config.size + 'px';\n        \n        if (config.logo) {\n          logoPreview.src = config.logo;\n          logoPreview.style.display = 'block';\n          logoPreviewContainer.style.display = 'flex';\n        }\n      }\n    } catch (e) {\n      console.error('Failed to load settings', e);\n      \/\/ N\u1ebfu l\u1ed7i khi t\u1ea3i (v\u00ed d\u1ee5 d\u1eef li\u1ec7u b\u1ecb h\u1ecfng), x\u00f3a \u0111i \u0111\u1ec3 tr\u00e1nh l\u1ed7i l\u1ea7n sau\n      localStorage.removeItem('qrConfigApp');\n    }\n    \n    \/\/ Lu\u00f4n t\u1ea1o l\u1ea1i tab v\u00e0 input fields d\u1ef1a tr\u00ean config cu\u1ed1i c\u00f9ng\n    document.getElementById('typeTabs').innerHTML = ''; \/\/ X\u00f3a tabs c\u0169\n    createTabs();\n    createInputFields();\n  }\n\n  \/\/ --- CH\u1ea0Y \u1ee8NG D\u1ee4NG KHI DOM S\u1eb4N S\u00c0NG ---\n  document.addEventListener('DOMContentLoaded', init);\n<\/script>\n\n<\/body>\n<\/html><\/div><\/div><div class=\"wpb_wrapper wpb_text_column td_block_wrap td_block_wrap vc_column_text tdi_9  tagdiv-type td-pb-border-top td_block_template_1\"  data-td-block-uid=\"tdi_9\" ><div class=\"td-block-title-wrap\"><\/div><div class=\"td-fix-index\"><h2 style=\"text-align: center;\" data-start=\"72\" data-end=\"118\"><strong><span class=\"_fadeIn_pfttw_8\">Introducing <\/span><span class=\"_fadeIn_pfttw_8\">the Free\u00a0<\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">Code <\/span><span class=\"_fadeIn_pfttw_8\">Generator <\/span><span class=\"_fadeIn_pfttw_8\">Tool<\/span><\/strong><\/h2>\n<p data-start=\"120\" data-end=\"457\"><span class=\"_fadeIn_pfttw_8\">Welcome <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><strong data-start=\"135\" data-end=\"156\"><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">Code <\/span><span class=\"_fadeIn_pfttw_8\">Generator<\/span><\/strong><span class=\"_fadeIn_pfttw_8\"> \u2013 <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">powerful <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">easy-<\/span><span class=\"_fadeIn_pfttw_8\">to-<\/span><span class=\"_fadeIn_pfttw_8\">use <\/span><span class=\"_fadeIn_pfttw_8\">tool <\/span><span class=\"_fadeIn_pfttw_8\">that <\/span><span class=\"_fadeIn_pfttw_8\">allows <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">create <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">codes <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">various <\/span><span class=\"_fadeIn_pfttw_8\">purposes <\/span><span class=\"_fadeIn_pfttw_8\">in <\/span><span class=\"_fadeIn_pfttw_8\">just <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">few <\/span><span class=\"_fadeIn_pfttw_8\">simple <\/span><span class=\"_fadeIn_pfttw_8\">steps! <\/span><span class=\"_fadeIn_pfttw_8\">You <\/span><span class=\"_fadeIn_pfttw_8\">don\u2019t <\/span><span class=\"_fadeIn_pfttw_8\">need <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">be <\/span><span class=\"_fadeIn_pfttw_8\">an <\/span><span class=\"_fadeIn_pfttw_8\">expert, <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">can <\/span><span class=\"_fadeIn_pfttw_8\">easily <\/span><span class=\"_fadeIn_pfttw_8\">generate <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">codes <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">website <\/span><span class=\"_fadeIn_pfttw_8\">links, <\/span><span class=\"_fadeIn_pfttw_8\">contact <\/span><span class=\"_fadeIn_pfttw_8\">information, <\/span><span class=\"_fadeIn_pfttw_8\">SMS <\/span><span class=\"_fadeIn_pfttw_8\">messages, <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">much <\/span><span class=\"_fadeIn_pfttw_8\">more. <\/span><span class=\"_fadeIn_pfttw_8\">Explore <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">great <\/span><span class=\"_fadeIn_pfttw_8\">features <\/span><span class=\"_fadeIn_pfttw_8\">this <\/span><span class=\"_fadeIn_pfttw_8\">tool <\/span><span class=\"_fadeIn_pfttw_8\">offers:<\/span><\/p>\n<h2 data-start=\"459\" data-end=\"511\"><strong data-start=\"467\" data-end=\"511\"><span class=\"_fadeIn_pfttw_8\">Easily <\/span><span class=\"_fadeIn_pfttw_8\">Generate <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">Codes <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">Any <\/span><span class=\"_fadeIn_pfttw_8\">Content<\/span><\/strong><\/h2>\n<ul data-start=\"515\" data-end=\"1087\">\n<li data-start=\"515\" data-end=\"608\">\n<p data-start=\"517\" data-end=\"608\"><strong data-start=\"517\" data-end=\"532\"><span class=\"_fadeIn_pfttw_8\">URL (<\/span><span class=\"_fadeIn_pfttw_8\">Link):<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Generate <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">codes <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">any <\/span><span class=\"_fadeIn_pfttw_8\">URL, <\/span><span class=\"_fadeIn_pfttw_8\">allowing <\/span><span class=\"_fadeIn_pfttw_8\">users <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">easily <\/span><span class=\"_fadeIn_pfttw_8\">visit <\/span><span class=\"_fadeIn_pfttw_8\">your <\/span><span class=\"_fadeIn_pfttw_8\">website.<\/span>\n<\/li>\n<li data-start=\"612\" data-end=\"684\">\n<p data-start=\"614\" data-end=\"684\"><strong data-start=\"614\" data-end=\"623\"><span class=\"_fadeIn_pfttw_8\">Text:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Share <\/span><span class=\"_fadeIn_pfttw_8\">any <\/span><span class=\"_fadeIn_pfttw_8\">text <\/span><span class=\"_fadeIn_pfttw_8\">content, <\/span><span class=\"_fadeIn_pfttw_8\">from <\/span><span class=\"_fadeIn_pfttw_8\">short <\/span><span class=\"_fadeIn_pfttw_8\">messages <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">longer <\/span><span class=\"_fadeIn_pfttw_8\">notes.<\/span>\n<\/li>\n<li data-start=\"688\" data-end=\"790\">\n<p data-start=\"690\" data-end=\"790\"><strong data-start=\"690\" data-end=\"700\"><span class=\"_fadeIn_pfttw_8\">Email:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Create <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">an <\/span><span class=\"_fadeIn_pfttw_8\">email <\/span><span class=\"_fadeIn_pfttw_8\">address, <\/span><span class=\"_fadeIn_pfttw_8\">enabling <\/span><span class=\"_fadeIn_pfttw_8\">users <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">send <\/span><span class=\"_fadeIn_pfttw_8\">emails <\/span><span class=\"_fadeIn_pfttw_8\">with <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">single <\/span><span class=\"_fadeIn_pfttw_8\">click.<\/span>\n<\/li>\n<li data-start=\"794\" data-end=\"882\">\n<p data-start=\"796\" data-end=\"882\"><strong data-start=\"796\" data-end=\"819\"><span class=\"_fadeIn_pfttw_8\">Phone <\/span><span class=\"_fadeIn_pfttw_8\">Number (<\/span><span class=\"_fadeIn_pfttw_8\">Tel):<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Create <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code <\/span><span class=\"_fadeIn_pfttw_8\">that <\/span><span class=\"_fadeIn_pfttw_8\">lets <\/span><span class=\"_fadeIn_pfttw_8\">users <\/span><span class=\"_fadeIn_pfttw_8\">dial <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">phone <\/span><span class=\"_fadeIn_pfttw_8\">number <\/span><span class=\"_fadeIn_pfttw_8\">directly.<\/span>\n<\/li>\n<li data-start=\"886\" data-end=\"974\">\n<p data-start=\"888\" data-end=\"974\"><strong data-start=\"888\" data-end=\"896\"><span class=\"_fadeIn_pfttw_8\">SMS:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Share <\/span><span class=\"_fadeIn_pfttw_8\">an <\/span><span class=\"_fadeIn_pfttw_8\">SMS <\/span><span class=\"_fadeIn_pfttw_8\">message <\/span><span class=\"_fadeIn_pfttw_8\">via <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code, <\/span><span class=\"_fadeIn_pfttw_8\">making <\/span><span class=\"_fadeIn_pfttw_8\">it <\/span><span class=\"_fadeIn_pfttw_8\">easy <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">send <\/span><span class=\"_fadeIn_pfttw_8\">quick <\/span><span class=\"_fadeIn_pfttw_8\">text <\/span><span class=\"_fadeIn_pfttw_8\">messages.<\/span>\n<\/li>\n<li data-start=\"978\" data-end=\"1087\">\n<p data-start=\"980\" data-end=\"1087\"><strong data-start=\"980\" data-end=\"993\"><span class=\"_fadeIn_pfttw_8\">WhatsApp:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Send <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">WhatsApp <\/span><span class=\"_fadeIn_pfttw_8\">message <\/span><span class=\"_fadeIn_pfttw_8\">using <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code, <\/span><span class=\"_fadeIn_pfttw_8\">perfect <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">marketing <\/span><span class=\"_fadeIn_pfttw_8\">campaigns <\/span><span class=\"_fadeIn_pfttw_8\">or <\/span><span class=\"_fadeIn_pfttw_8\">customer <\/span><span class=\"_fadeIn_pfttw_8\">support.<\/span>\n<\/li>\n<\/ul>\n<h2 data-start=\"1089\" data-end=\"1133\"><strong data-start=\"1097\" data-end=\"1133\"><span class=\"_fadeIn_pfttw_8\">Easy <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">Intuitive <\/span><span class=\"_fadeIn_pfttw_8\">Customization<\/span><\/strong><\/h2>\n<ul data-start=\"1137\" data-end=\"1596\">\n<li data-start=\"1137\" data-end=\"1299\">\n<p data-start=\"1139\" data-end=\"1299\"><strong data-start=\"1139\" data-end=\"1167\"><span class=\"_fadeIn_pfttw_8\">User-<\/span><span class=\"_fadeIn_pfttw_8\">friendly <\/span><span class=\"_fadeIn_pfttw_8\">interface:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Simply <\/span><span class=\"_fadeIn_pfttw_8\">choose <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">type <\/span><span class=\"_fadeIn_pfttw_8\">of <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">want <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">create, <\/span><span class=\"_fadeIn_pfttw_8\">enter <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">data, <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">tool <\/span><span class=\"_fadeIn_pfttw_8\">will <\/span><span class=\"_fadeIn_pfttw_8\">automatically <\/span><span class=\"_fadeIn_pfttw_8\">generate <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">you.<\/span>\n<\/li>\n<li data-start=\"1303\" data-end=\"1414\">\n<p data-start=\"1305\" data-end=\"1414\"><strong data-start=\"1305\" data-end=\"1325\"><span class=\"_fadeIn_pfttw_8\">Preview <\/span><span class=\"_fadeIn_pfttw_8\">feature:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">The <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code <\/span><span class=\"_fadeIn_pfttw_8\">is <\/span><span class=\"_fadeIn_pfttw_8\">displayed <\/span><span class=\"_fadeIn_pfttw_8\">instantly <\/span><span class=\"_fadeIn_pfttw_8\">on <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">screen <\/span><span class=\"_fadeIn_pfttw_8\">so <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">can <\/span><span class=\"_fadeIn_pfttw_8\">check <\/span><span class=\"_fadeIn_pfttw_8\">it <\/span><span class=\"_fadeIn_pfttw_8\">before <\/span><span class=\"_fadeIn_pfttw_8\">downloading.<\/span>\n<\/li>\n<li data-start=\"1418\" data-end=\"1596\">\n<p data-start=\"1420\" data-end=\"1596\"><strong data-start=\"1420\" data-end=\"1441\"><span class=\"_fadeIn_pfttw_8\">Download <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">Code:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Once <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code <\/span><span class=\"_fadeIn_pfttw_8\">is <\/span><span class=\"_fadeIn_pfttw_8\">generated, <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">can <\/span><span class=\"_fadeIn_pfttw_8\">easily <\/span><span class=\"_fadeIn_pfttw_8\">download <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">use <\/span><span class=\"_fadeIn_pfttw_8\">it <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">various <\/span><span class=\"_fadeIn_pfttw_8\">purposes <\/span><span class=\"_fadeIn_pfttw_8\">like <\/span><span class=\"_fadeIn_pfttw_8\">printing, <\/span><span class=\"_fadeIn_pfttw_8\">sharing <\/span><span class=\"_fadeIn_pfttw_8\">via <\/span><span class=\"_fadeIn_pfttw_8\">email, <\/span><span class=\"_fadeIn_pfttw_8\">or <\/span><span class=\"_fadeIn_pfttw_8\">adding <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">marketing <\/span><span class=\"_fadeIn_pfttw_8\">materials.<\/span>\n<\/li>\n<\/ul>\n<h2 data-start=\"1598\" data-end=\"1632\"><strong data-start=\"1606\" data-end=\"1632\"><span class=\"_fadeIn_pfttw_8\">Cross-<\/span><span class=\"_fadeIn_pfttw_8\">Platform <\/span><span class=\"_fadeIn_pfttw_8\">Support<\/span><\/strong><\/h2>\n<ul data-start=\"1636\" data-end=\"1775\">\n<li data-start=\"1636\" data-end=\"1775\">\n<p data-start=\"1638\" data-end=\"1775\"><span class=\"_fadeIn_pfttw_8\">The <\/span><span class=\"_fadeIn_pfttw_8\">tool <\/span><span class=\"_fadeIn_pfttw_8\">works <\/span><span class=\"_fadeIn_pfttw_8\">well <\/span><span class=\"_fadeIn_pfttw_8\">on <\/span><span class=\"_fadeIn_pfttw_8\">all <\/span><span class=\"_fadeIn_pfttw_8\">devices, <\/span><span class=\"_fadeIn_pfttw_8\">from <\/span><span class=\"_fadeIn_pfttw_8\">desktop <\/span><span class=\"_fadeIn_pfttw_8\">computers <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">mobile <\/span><span class=\"_fadeIn_pfttw_8\">phones, <\/span><span class=\"_fadeIn_pfttw_8\">allowing <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">create <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">codes <\/span><span class=\"_fadeIn_pfttw_8\">anytime, <\/span><span class=\"_fadeIn_pfttw_8\">anywhere <\/span><span class=\"_fadeIn_pfttw_8\">with <\/span><span class=\"_fadeIn_pfttw_8\">ease.<\/span>\n<\/li>\n<\/ul>\n<h2 data-start=\"1777\" data-end=\"1814\"><strong data-start=\"1781\" data-end=\"1814\"><span class=\"_fadeIn_pfttw_8\">Why <\/span><span class=\"_fadeIn_pfttw_8\">Should <\/span><span class=\"_fadeIn_pfttw_8\">You <\/span><span class=\"_fadeIn_pfttw_8\">Use <\/span><span class=\"_fadeIn_pfttw_8\">This <\/span><span class=\"_fadeIn_pfttw_8\">Tool?<\/span><\/strong><\/h2>\n<ul data-start=\"1815\" data-end=\"2207\">\n<li data-start=\"1815\" data-end=\"1925\">\n<p data-start=\"1817\" data-end=\"1925\"><strong data-start=\"1817\" data-end=\"1831\"><span class=\"_fadeIn_pfttw_8\">Save <\/span><span class=\"_fadeIn_pfttw_8\">time:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">No <\/span><span class=\"_fadeIn_pfttw_8\">need <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">complicated <\/span><span class=\"_fadeIn_pfttw_8\">software; <\/span><span class=\"_fadeIn_pfttw_8\">just <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">few <\/span><span class=\"_fadeIn_pfttw_8\">clicks <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">you\u2019ll <\/span><span class=\"_fadeIn_pfttw_8\">have <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">complete <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">code <\/span><span class=\"_fadeIn_pfttw_8\">ready.<\/span>\n<\/li>\n<li data-start=\"1926\" data-end=\"2066\">\n<p data-start=\"1928\" data-end=\"2066\"><strong data-start=\"1928\" data-end=\"1948\"><span class=\"_fadeIn_pfttw_8\">Ensure <\/span><span class=\"_fadeIn_pfttw_8\">accuracy:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">Create <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">codes <\/span><span class=\"_fadeIn_pfttw_8\">in <\/span><span class=\"_fadeIn_pfttw_8\">the <\/span><span class=\"_fadeIn_pfttw_8\">right <\/span><span class=\"_fadeIn_pfttw_8\">format <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">each <\/span><span class=\"_fadeIn_pfttw_8\">type <\/span><span class=\"_fadeIn_pfttw_8\">of <\/span><span class=\"_fadeIn_pfttw_8\">information, <\/span><span class=\"_fadeIn_pfttw_8\">ensuring <\/span><span class=\"_fadeIn_pfttw_8\">users <\/span><span class=\"_fadeIn_pfttw_8\">won\u2019t <\/span><span class=\"_fadeIn_pfttw_8\">face <\/span><span class=\"_fadeIn_pfttw_8\">any <\/span><span class=\"_fadeIn_pfttw_8\">issues <\/span><span class=\"_fadeIn_pfttw_8\">when <\/span><span class=\"_fadeIn_pfttw_8\">scanning.<\/span>\n<\/li>\n<\/ul>\n<p><span class=\"_fadeIn_pfttw_8\"><img decoding=\"async\" class=\"size-full wp-image-2858 aligncenter\" src=\"https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator.png\" alt=\"\" width=\"1226\" height=\"505\" srcset=\"https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator.png 1226w, https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator-300x124.png 300w, https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator-1024x422.png 1024w, https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator-768x316.png 768w, https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator-150x62.png 150w, https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator-696x287.png 696w, https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/qr-code-generator-1068x440.png 1068w\" sizes=\"(max-width: 1226px) 100vw, 1226px\" \/><\/span><\/p>\n<ul data-start=\"1815\" data-end=\"2207\">\n<li data-start=\"2067\" data-end=\"2207\">\n<p data-start=\"2069\" data-end=\"2207\"><strong data-start=\"2069\" data-end=\"2094\"><span class=\"_fadeIn_pfttw_8\">Free <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">easy <\/span><span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">use:<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">The <\/span><span class=\"_fadeIn_pfttw_8\">tool <\/span><span class=\"_fadeIn_pfttw_8\">is <\/span><span class=\"_fadeIn_pfttw_8\">completely <\/span><span class=\"_fadeIn_pfttw_8\">free <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">doesn\u2019t <\/span><span class=\"_fadeIn_pfttw_8\">require <\/span><span class=\"_fadeIn_pfttw_8\">creating <\/span><span class=\"_fadeIn_pfttw_8\">an <\/span><span class=\"_fadeIn_pfttw_8\">account. <\/span><span class=\"_fadeIn_pfttw_8\">Simply <\/span><span class=\"_fadeIn_pfttw_8\">visit <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">start <\/span><span class=\"_fadeIn_pfttw_8\">using <\/span><span class=\"_fadeIn_pfttw_8\">it <\/span><span class=\"_fadeIn_pfttw_8\">right <\/span><span class=\"_fadeIn_pfttw_8\">away!<\/span>\n<\/li>\n<\/ul>\n<h2 data-start=\"2209\" data-end=\"2247\"><strong data-start=\"2213\" data-end=\"2247\"><span class=\"_fadeIn_pfttw_8\">Start <\/span><span class=\"_fadeIn_pfttw_8\">Creating Free\u00a0<\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">Codes <\/span><span class=\"_fadeIn_pfttw_8\">Today!<\/span><\/strong><\/h2>\n<p data-start=\"2248\" data-end=\"2430\"><span class=\"_fadeIn_pfttw_8\">Begin <\/span><span class=\"_fadeIn_pfttw_8\">using <\/span><span class=\"_fadeIn_pfttw_8\">the <strong>Free<\/strong>\u00a0<\/span><strong data-start=\"2264\" data-end=\"2285\"><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">Code <\/span><span class=\"_fadeIn_pfttw_8\">Generator<\/span><\/strong> <span class=\"_fadeIn_pfttw_8\">to <\/span><span class=\"_fadeIn_pfttw_8\">create <\/span><span class=\"_fadeIn_pfttw_8\">QR <\/span><span class=\"_fadeIn_pfttw_8\">codes <\/span><span class=\"_fadeIn_pfttw_8\">for <\/span><span class=\"_fadeIn_pfttw_8\">all <\/span><span class=\"_fadeIn_pfttw_8\">your <\/span><span class=\"_fadeIn_pfttw_8\">needs! <\/span><span class=\"_fadeIn_pfttw_8\">This <\/span><span class=\"_fadeIn_pfttw_8\">tool <\/span><span class=\"_fadeIn_pfttw_8\">will <\/span><span class=\"_fadeIn_pfttw_8\">save <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">time <\/span><span class=\"_fadeIn_pfttw_8\">and <\/span><span class=\"_fadeIn_pfttw_8\">increase <\/span><span class=\"_fadeIn_pfttw_8\">your <\/span><span class=\"_fadeIn_pfttw_8\">productivity, <\/span><span class=\"_fadeIn_pfttw_8\">whether <\/span><span class=\"_fadeIn_pfttw_8\">you <\/span><span class=\"_fadeIn_pfttw_8\">are <\/span><span class=\"_fadeIn_pfttw_8\">an <\/span><span class=\"_fadeIn_pfttw_8\">individual <\/span><span class=\"_fadeIn_pfttw_8\">or <\/span><span class=\"_fadeIn_pfttw_8\">a <\/span><span class=\"_fadeIn_pfttw_8\">business.<\/span><\/p>\n<\/div><\/div><\/div><\/div><div class=\"vc_column tdi_11  wpb_column vc_column_container tdc-column td-pb-span4 td-is-sticky\">\n<style scoped>\n\n\/* custom css *\/\n.tdi_11{\r\n                    vertical-align: baseline;\r\n                }.tdi_11 > .wpb_wrapper,\r\n\t\t\t\t.tdi_11 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    display: block;\r\n\t\t\t\t}.tdi_11 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    width: 100%;\r\n\t\t\t\t}.tdi_11 > .wpb_wrapper > .vc_row_inner{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t}.tdi_11 > .wpb_wrapper{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t    height: auto;\r\n\t\t\t\t}\n<\/style><div class=\"wpb_wrapper\" data-sticky-offset=\"20\"><div class=\"td_block_wrap td_block_list_menu tdi_12 td-blm-display-vertical td-pb-border-top td_block_template_1 widget\"  data-td-block-uid=\"tdi_12\" >\n<style>\n\n\/* inline tdc_css att *\/\n\n.tdi_12{\npadding-top:20px !important;\n}\n\n<\/style>\n<style>\n\/* custom css *\/\n.td_block_list_menu ul{\r\n                  flex-wrap: wrap;\r\n                  margin-left: 12px;\r\n                }.td_block_list_menu ul li{\r\n\t\t\t\t\tmargin-left: 0;\r\n\t\t\t\t}.td_block_list_menu ul li a{\r\n\t\t\t\t\tdisplay: flex;\r\n                  \tmargin-left: 0;\r\n                }.td_block_list_menu .td-blm-menu-item-txt{\r\n\t\t\t\t\tdisplay: flex;\r\n\t\t\t\t\talign-items: center;\r\n\t\t\t\t\tflex-grow: 1;\r\n\t\t\t\t}.td_block_list_menu .sub-menu{\r\n                  padding-left: 22px;\r\n                }.td_block_list_menu .sub-menu li{\r\n                  font-size: 13px;\r\n                }.td_block_list_menu li.current-menu-item > a,\r\n\t\t\t\t.td_block_list_menu li.current-menu-ancestor > a,\r\n\t\t\t\t.td_block_list_menu li.current-category-ancestor > a{\r\n\t\t\t\t    color: #4db2ec;\r\n\t\t\t\t}.td_block_list_menu .td-blm-sub-icon{\r\n\t\t\t\t\tdisplay: flex;\r\n\t\t\t\t\talign-items: center;\r\n\t\t\t\t\tjustify-content: center;\r\n\t\t\t\t\tmargin-left: .6em;\r\n\t\t\t\t\tpadding: 0 .6em;\r\n\t\t\t\t\ttransition: transform .2s ease-in-out;\r\n\t\t\t\t}.td_block_list_menu .td-blm-sub-icon svg{\r\n\t\t\t\t\tdisplay: block;\r\n\t\t\t\t\twidth: 1em;\r\n\t\t\t\t\theight: auto;\r\n\t\t\t\t}.td_block_list_menu .td-blm-sub-icon svg,\r\n\t\t\t\t.td_block_list_menu .td-blm-sub-icon svg *{\r\n\t\t\t\t\tfill: currentColor;\r\n\t\t\t\t}.td_block_list_menu.td-blm-display-accordion .menu-item-has-children ul{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}.td_block_list_menu.td-blm-display-accordion .menu-item-has-children-open > a > .td-blm-sub-icon{\r\n\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t}.td_block_list_menu.td-blm-display-horizontal ul{\r\n\t\t\t\t\tdisplay: flex;\r\n\t\t\t\t}body .tdi_12 ul{\r\n\t\t\t\t\ttext-align: left;\r\n\t\t\t\t\tjustify-content: flex-start;\r\n\t\t\t\t}body .tdi_12 ul li a{\r\n\t\t\t\t\tjustify-content: flex-start;\r\n\t\t\t\t}body .tdi_12 .td-blm-menu-item-txt{\r\n\t\t\t\t\tflex-grow: 1;\r\n\t\t\t\t}\n<\/style><div class=\"td-block-title-wrap\"><h4 class=\"block-title td-block-title\"><span class=\"td-pulldown-size\">Other Calculators<\/span><\/h4><\/div><div id=tdi_12 class=\"td_block_inner td-fix-index\"><div class=\"menu-other-calculators-container\"><ul id=\"menu-other-calculators\" class=\"menu\"><li id=\"menu-item-2618\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2618\"><a href=\"https:\/\/www.ezcalculatoronline.com\/construction-calculators\/board-foot-calculator\/\"><span class=\"td-blm-menu-item-txt\">Board Foot Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2619\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2619\"><a href=\"https:\/\/www.ezcalculatoronline.com\/construction-calculators\/paint-calculator\/\"><span class=\"td-blm-menu-item-txt\">Paint Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2620\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2620\"><a href=\"https:\/\/www.ezcalculatoronline.com\/math\/average-percentage-calculator\/\"><span class=\"td-blm-menu-item-txt\">Average Percentage Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2621\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2621\"><a href=\"https:\/\/www.ezcalculatoronline.com\/math\/fraction-to-percent-calculator\/\"><span class=\"td-blm-menu-item-txt\">Fraction to Percent Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2622\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2622\"><a href=\"https:\/\/www.ezcalculatoronline.com\/physics-calculators\/velocity-calculator\/\"><span class=\"td-blm-menu-item-txt\">Velocity Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2623\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2623\"><a href=\"https:\/\/www.ezcalculatoronline.com\/games\/pokemon-go-candy\/\"><span class=\"td-blm-menu-item-txt\">Pok\u00e9mon Go Candy Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2624\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2624\"><a href=\"https:\/\/www.ezcalculatoronline.com\/games\/pokemon-search\/\"><span class=\"td-blm-menu-item-txt\">Pok\u00e9mon Search<\/span><\/a><\/li>\n<li id=\"menu-item-2625\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2625\"><a href=\"https:\/\/www.ezcalculatoronline.com\/games\/lottery-numbers-tool\/\"><span class=\"td-blm-menu-item-txt\">Lottery Numbers Tool<\/span><\/a><\/li>\n<li id=\"menu-item-2626\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2626\"><a href=\"https:\/\/www.ezcalculatoronline.com\/pets-calculators\/pet-age-calculator\/\"><span class=\"td-blm-menu-item-txt\">Pet Age Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2627\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2627\"><a href=\"https:\/\/www.ezcalculatoronline.com\/pets-calculators\/dog-pregnancy-calculator\/\"><span class=\"td-blm-menu-item-txt\">Dog Pregnancy Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2628\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2628\"><a href=\"https:\/\/www.ezcalculatoronline.com\/online-tools\/website-to-ip-lookup\/\"><span class=\"td-blm-menu-item-txt\">Website to IP lookup<\/span><\/a><\/li>\n<li id=\"menu-item-2629\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2629\"><a href=\"https:\/\/www.ezcalculatoronline.com\/online-tools\/search-ip-address\/\"><span class=\"td-blm-menu-item-txt\">Search IP Address<\/span><\/a><\/li>\n<li id=\"menu-item-2630\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2630\"><a href=\"https:\/\/www.ezcalculatoronline.com\/online-tools\/wheel-of-names\/\"><span class=\"td-blm-menu-item-txt\">Wheel of Names<\/span><\/a><\/li>\n<li id=\"menu-item-2631\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2631\"><a href=\"https:\/\/www.ezcalculatoronline.com\/education-calculators\/test-grade-calculator\/\"><span class=\"td-blm-menu-item-txt\">Test Grade Calculator<\/span><\/a><\/li>\n<li id=\"menu-item-2632\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-2632\"><a href=\"https:\/\/www.ezcalculatoronline.com\/online-tools\/hex-color-picker\/\"><span class=\"td-blm-menu-item-txt\">Color Picker<\/span><\/a><\/li>\n<\/ul><\/div><\/div><\/div><div class=\"wpb_wrapper td_block_wrap vc_raw_html tdi_14 \"><div class=\"td-fix-index\"><script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-7396755811986582\"\n     crossorigin=\"anonymous\"><\/script>\n<!-- ads 300 x 250 -->\n<ins class=\"adsbygoogle\"\n     style=\"display:inline-block;width:300px;height:250px\"\n     data-ad-client=\"ca-pub-7396755811986582\"\n     data-ad-slot=\"2517371721\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/div><\/div><div class=\"wpb_wrapper td_block_wrap vc_raw_html tdi_16 \"><div class=\"td-fix-index\"><script async src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-7396755811986582\"\n     crossorigin=\"anonymous\"><\/script>\n<!-- Ads KNS 300 x 600 -->\n<ins class=\"adsbygoogle\"\n     style=\"display:inline-block;width:300px;height:600px\"\n     data-ad-client=\"ca-pub-7396755811986582\"\n     data-ad-slot=\"4956265638\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":4294,"parent":4298,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2834","page","type-page","status-publish","has-post-thumbnail"],"rankMath":{"parentDomain":"ezcalculatoronline.com","noFollowDomains":[],"noFollowExcludeDomains":[],"noFollowExternalLinks":false,"featuredImageNotice":"The featured image should be at least 200 by 200 pixels to be picked up by Facebook and other social media sites.","pluginReviewed":false,"postSettings":{"linkSuggestions":true,"useFocusKeyword":false},"frontEndScore":false,"postName":"qr-code-generator","permalinkFormat":"https:\/\/www.ezcalculatoronline.com\/%pagename%\/","showLockModifiedDate":true,"assessor":{"focusKeywordLink":"https:\/\/www.ezcalculatoronline.com\/wp-admin\/edit.php?focus_keyword=%focus_keyword%&post_type=%post_type%","hasTOCPlugin":false,"primaryTaxonomy":false,"serpData":{"title":"QR Code Generator - Easily Create QR Codes for Any Purpose","description":"Use our QR Code Generator to create custom QR codes for URLs, emails, SMS, and more. Fast, easy, and free to use for all your needs.","focusKeywords":"QR Code Generator","pillarContent":false,"canonicalUrl":"","breadcrumbTitle":"","advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":"","facebookHasOverlay":false,"facebookImageOverlay":"","facebookAuthor":"","twitterCardType":"","twitterUseFacebook":true,"twitterTitle":"","twitterDescription":"","twitterImage":"","twitterImageID":"","twitterHasOverlay":false,"twitterImageOverlay":"","twitterPlayerUrl":"","twitterPlayerSize":"","twitterPlayerStream":"","twitterPlayerStreamCtype":"","twitterAppDescription":"","twitterAppIphoneName":"","twitterAppIphoneID":"","twitterAppIphoneUrl":"","twitterAppIpadName":"","twitterAppIpadID":"","twitterAppIpadUrl":"","twitterAppGoogleplayName":"","twitterAppGoogleplayID":"","twitterAppGoogleplayUrl":"","twitterAppCountry":"","robots":{"index":true},"twitterAuthor":"username","primaryTerm":0,"authorName":"Thien Nguyen","titleTemplate":"%title% %sep% %sitename%","descriptionTemplate":"%excerpt%","showScoreFrontend":true,"lockModifiedDate":false},"powerWords":["a cut above","absolute","absolutely","absolutely lowest","absurd","abuse","accurate","accuse","achieve","actionable","adaptable","adequate","admit","adorable","advantage","advice","affordable","aggravate","aggressive","agitated","agonizing","agony","alarmed","alarming","alienated","aligned","alive","all-inclusive","alluring","always","amazing","amp","animated","annihilate","announcing","anonymous","antagonistic","anxious","apocalypse","appalled","approved","approving","argumentative","armageddon","arrogant","ass kicking","assault","assured","astonishing","astounded","astounding","at ease","atrocious","attack","attractive","audacity","authentic","authoritative","authority","avoid","aware","awe-inspiring","awesome","awkward","backbone","backdoor","backed","backlash","backstabbing","badass","balanced","banned","bargain","barrage","basic","battle","beaming","beat down","beating","beautiful","beauty","begging","behind the scenes","belief","belong","best","best-selling","better","beware","big","billion","black market","blacklisted","blast","blessed","blinded","blissful","blood","bloodbath","bloodcurdling","bloody","blunder","blushing","bold","bomb","bona","bona fide","bonanza","bonus","bootleg","bottom line","bountiful","brave","bravery","brazen","break","breaking","breakthrough","breathtaking","bright","brilliant","broke","brutal","budget","buffoon","bullshit","bully","bumbling","buy","cadaver","calm","cancel anytime","capable","captivate","captivating","carefree","case study","cash","cataclysmic","catapult","catastrophe","caution","censored","centered","certain","certainly","certified","challenge","charming","cheap","cheat","cheat-sheet","cheer","cheerful","child-like","clarity","classified","clear","clueless","collapse","colorful","colossal","comfortable","compare","competitive","complete","completely","completeness","comprehensive","compromise","compulsive","concealed","conclusive","condemning","condescending","confess","confession","confessions","confident","confidential","conquer","conscientious","constructive","content","contrary","controlling","controversial","convenient","convert","cool","cooperative","copy","corpse","corrupt","corrupting","courage","courageous","cover-up","covert","coward","cowardly","crammed","crave","crazy","create","creative","cringeworthy","cripple","crisis","critical","crooked","crush","crushing","damaging","danger","dangerous","daring","dazzling","dead","deadline","deadly","death","decadent","deceived","deceptive","deep","defiance","definitely","definitive","defying","dejected","delicious","delight","delighted","delightful","delirious","delivered","demoralizing","deplorable","depraved","desire","desperate","despicable","destiny","destroy","detailed","devastating","devoted","diagnosed","direct","dirty","disadvantages","disastrous","discount","discover","disdainful","disempowered","disgusted","disgusting","dishonest","disillusioned","disoriented","distracted","distraught","distressed","distrustful","divulge","document","dollar","dominate","doomed","double","doubtful","download","dreadful","dreamy","drive","drowning","dumb","dynamic","eager","earnest","easily","easy","economical","ecstatic","edge","effective","efficient","effortless","elated","eliminate","elite","embarrass","embarrassed","embarrassing","emergency","emerging","emphasize","empowered","enchant","encouraged","endorsed","energetic","energy","enormous","enraged","enthusiastic","envy","epic","epidemic","essential","ethical","euphoric","evil","exactly","exasperated","excellent","excited","excitement","exciting","exclusive","exclusivity","excruciating","exhilarated","expensive","expert","explode","exploit","explosive","exposed","exquisite","extra","extraordinary","extremely","exuberant","eye-opening","fail","fail-proof","failure","faith","famous","fantasy","fascinating","fatigued","faux","faux pas","fearless","feast","feeble","festive","fide","fierce","fight","final","fine","fired","first","first ever","flirt","fluid","focus","focused","fool","fooled","foolish","forbidden","force-fed","forever","forgiving","forgotten","formula","fortune","foul","frantic","free","freebie","freedom","frenzied","frenzy","frightening","frisky","frugal","frustrated","fulfill","fulfilled","full","fully","fun","fun-loving","fundamentals","funniest","funny","furious","gambling","gargantuan","genius","genuine","gift","gigantic","giveaway","glamorous","gleeful","glorious","glowing","goddamn","gorgeous","graceful","grateful","gratified","gravity","great","greatest","greatness","greed","greedy","gripping","grit","grounded","growth","guaranteed","guilt","guilt-free","gullible","guts","hack","happiness","happy","harmful","harsh","hate","have you heard","havoc","hazardous","healthy","heart","heartbreaking","heartwarming","heavenly","hell","helpful","helplessness","hero","hesitant","hidden","high tech","highest","highly effective","hilarious","hoak","hoax","honest","honored","hope","hopeful","horribly","horrific","horrifying","horror","hostile","how to","huge","humility","humor","hurricane","hurry","hypnotic","idiot","ignite","illegal","illusive","imagination","immediately","imminently","impatience","impatient","impenetrable","important","impressive","improved","in the zone","incapable","incapacitated","incompetent","inconsiderate","increase","incredible","indecisive","indulgence","indulgent","inexpensive","inferior","informative","infuriated","ingredients","innocent","innovative","insane","insecure","insider","insidious","inspired","inspiring","instant savings","instantly","instructive","insult","intel","intelligent","intense","interesting","intriguing","introducing","invasion","investment","iron-clad","ironclad","irresistible","irs","is here","jackpot","jail","jaw-dropping","jealous","jeopardy","jittery","jovial","joyous","jubilant","judgmental","jumpstart","just arrived","keen","kickass","kickstart","kill","killed","killing","kills","know it all","lame","largest","lascivious","last","last chance","last minute","latest","laugh","laughing","launch","launching","lavishly","lawsuit","lazy","left behind","legendary","legitimate","liberal","liberated","lick","lies","life-changing","lifetime","light","lighthearted","likely","limited","literally","little-known","loathsome","lonely","looming","loser","lost","love","lucrative","lunatic","lurking","lust","luxurious","luxury","lying","magic","magical","magnificent","mainstream","malicious","mammoth","manipulative","marked down","massive","master","masterclass","maul","mediocre","meditative","meltdown","memorability","memorable","menacing","mesmerizing","meticulous","mind-blowing","minimalist","miracle","mired","mischievous","misgiving","missing out","mistake","monetize","money","moneyback","moneygrubbing","monumental","most important","motivated","mouth-watering","murder","mystery","nail","naked","natural","naughty","nazi","nest egg","never","new","nightmare","no good","no obligation","no one talks about","no questions asked","no risk","no strings attached","non-controlling","noted","novelty","now","obnoxious","obsessed","obsession","obvious","odd","off-kilter","off-limits","off-the record","offensive","official","okay","on-demand","open-minded","opportunities","optimistic","ordeal","outlawed","outrageousness","outstanding","overcome","overjoyed","overnight","overwhelmed","packed","painful","painless","painstaking","pale","panic","panicked","paralyzed","pas","passionate","pathetic","pay zero","payback","perfect","peril","perplexed","perspective","pessimistic","pioneering","piranha","pitfall","pitiful","placid","plague","played","playful","pleased","pluck","plummet","plunge","poison","poisonous","polarizing","poor","popular","portfolio","pound","powerful","powerless","practical","preposterous","prestige","price","priceless","pride","prison","privacy","private","privileged","prize","problem","productive","professional","profit","profitable","profound","promiscuous","promising","promote","protect","protected","proven","provocative","provoke","psychological","pummel","punch","punish","pus","quadruple","quality","quarrelsome","quick","quick-start","quickly","quiet","radiant","rare","ravenous","rebellious","recession-proof","reckoning","recognized","recommend","recreate","reduced","reflective","refugee","refund","refundable","reject","relaxed","release","relentless","reliable","remarkable","replicate","report","reprimanding","repulsed","repulsive","research","resentful","resourceful","responsible","responsive","rested","restricted","results","retaliating","reveal","revealing","revenge","revengeful","revisited","revolting","revolutionary","reward","rich","ridiculous","risky","riveting","rookie","rowdy","ruin","rules","ruthless","sabotaging","sacred","sadistic","sadly","sadness","safe","safety","sale","sampler","sarcastic","satisfied","savage","savagery","save","savings","savvy","scam","scandal","scandalous","scarce","scared","scary","scornful","scream","searing","secret","secret agenda","secret plot","secrets","secure","security","seductive","seething","seize","selected","self-hating","self-sufficient","sensational","senseless","sensual","serene","seriously","severe","sex","sexy","shaking","shameful","shameless","shaming","shatter","shellacking","shocking","should","shrewd","sick and tired","signs","silly","simple","simplicity","simplified","simplistic","sincere","sinful","sins","six-figure","sizable","sizzle","sizzled","sizzles","sizzling","sizzlingly","skill","skyrocket","slaughter","slave","sleazy","sleeping","sly","smash","smiling","smug","smuggle","smuggled","sneak-peek","sneaky","sniveling","snob","snooty","snotty","soar","soaring","solid","solution","spank","special","spectacular","speedy","spell-binding","spine","spirit","spirited","spiteful","spoiler","spontaneous","spotlight","spunky","squirming","stable","staggering","startling","steady","steal","stealthy","steamy","step-by-step","still","stoic","stop","strange","strangle","strategy","stressed","strong","strongly suggest","struggle","stuck up","studies","stunning","stupid","stupid-simple","sturdy","sublime","succeed","success","successful","suck","suddenly","suffer","sunny","super","super-human","superb","supercharge","superior","supported","supportive","sure","sure fire","surefire","surge","surging","surprise","surprised","surprising","survival","survive","suspicious","sweaty","swoon","swoon-worthy","tailspin","tank","tantalizing","targeted","tawdry","tease","technology","teetering","tempting","tenacious","tense","terrible","terrific","terrified","terrifying","terror","terrorist","tested","thankful","the truth","threaten","threatened","thrilled","thrilling","thug","ticked off","tickled","timely","today","torture","toxic","track record","trade secret","tragedy","tragic","transform","transparency","trap","trapped","trauma","traumatized","treacherous","treasure","tremendous","trend","tricks","triggers","triple","triumph","truly","trusting","trustworthy","truth","truthful","turbo-charge","turbocharges","tweaks","twitching","ultimate","unadulterated","unassuming","unauthorized","unbelievable","unburdened","uncaring","uncensored","uncertain","uncomfortable","unconditional","uncontrollable","unconventional","uncovered","undeniable","under priced","undercover","underground","underhanded","underused","unexpected","unforgettable","unheard of","unhurried","uninterested","unique","unjustified","unknowingly","unleashed","unlimited","unlock","unparalleled","unpopular","unreliable","unresponsive","unseen","unstable","unstoppable","unsure","unsurpassed","untapped","unusual","up-sell","upbeat","uplifted","uplifting","urge","urgent","useful","useless","validate","valor","valuable","value","vanquish","vaporize","venomous","verify","vibrant","vicious","victim","victory","vigorous","vilified","vindictive","violated","violent","volatile","vulnerable","waiting","wanted","wanton","warning","waste","weak","wealth","weird","what no one tells you","whip","whopping","wicked","wild","willpower","withheld","wonderful","wondrous","woozy","world","worry","worst","worthwhile","wounded","wreaking","youthful","zen","zinger"],"diacritics":{"A":"[\\u0041\\u24B6\\uFF21\\u00C0\\u00C1\\u00C2\\u1EA6\\u1EA4\\u1EAA\\u1EA8\\u00C3\\u0100\\u0102\\u1EB0\\u1EAE\\u1EB4\\u1EB2\\u0226\\u01E0\\u00C4\\u01DE\\u1EA2\\u00C5\\u01FA\\u01CD\\u0200\\u0202\\u1EA0\\u1EAC\\u1EB6\\u1E00\\u0104\\u023A\\u2C6F]","AA":"[\\uA732]","AE":"[\\u00C6\\u01FC\\u01E2]","AO":"[\\uA734]","AU":"[\\uA736]","AV":"[\\uA738\\uA73A]","AY":"[\\uA73C]","B":"[\\u0042\\u24B7\\uFF22\\u1E02\\u1E04\\u1E06\\u0243\\u0182\\u0181]","C":"[\\u0043\\u24B8\\uFF23\\u0106\\u0108\\u010A\\u010C\\u00C7\\u1E08\\u0187\\u023B\\uA73E]","D":"[\\u0044\\u24B9\\uFF24\\u1E0A\\u010E\\u1E0C\\u1E10\\u1E12\\u1E0E\\u0110\\u018B\\u018A\\u0189\\uA779]","DZ":"[\\u01F1\\u01C4]","Dz":"[\\u01F2\\u01C5]","E":"[\\u0045\\u24BA\\uFF25\\u00C8\\u00C9\\u00CA\\u1EC0\\u1EBE\\u1EC4\\u1EC2\\u1EBC\\u0112\\u1E14\\u1E16\\u0114\\u0116\\u00CB\\u1EBA\\u011A\\u0204\\u0206\\u1EB8\\u1EC6\\u0228\\u1E1C\\u0118\\u1E18\\u1E1A\\u0190\\u018E]","F":"[\\u0046\\u24BB\\uFF26\\u1E1E\\u0191\\uA77B]","G":"[\\u0047\\u24BC\\uFF27\\u01F4\\u011C\\u1E20\\u011E\\u0120\\u01E6\\u0122\\u01E4\\u0193\\uA7A0\\uA77D\\uA77E]","H":"[\\u0048\\u24BD\\uFF28\\u0124\\u1E22\\u1E26\\u021E\\u1E24\\u1E28\\u1E2A\\u0126\\u2C67\\u2C75\\uA78D]","I":"[\\u0049\\u24BE\\uFF29\\u00CC\\u00CD\\u00CE\\u0128\\u012A\\u012C\\u0130\\u00CF\\u1E2E\\u1EC8\\u01CF\\u0208\\u020A\\u1ECA\\u012E\\u1E2C\\u0197]","J":"[\\u004A\\u24BF\\uFF2A\\u0134\\u0248]","K":"[\\u004B\\u24C0\\uFF2B\\u1E30\\u01E8\\u1E32\\u0136\\u1E34\\u0198\\u2C69\\uA740\\uA742\\uA744\\uA7A2]","L":"[\\u004C\\u24C1\\uFF2C\\u013F\\u0139\\u013D\\u1E36\\u1E38\\u013B\\u1E3C\\u1E3A\\u0141\\u023D\\u2C62\\u2C60\\uA748\\uA746\\uA780]","LJ":"[\\u01C7]","Lj":"[\\u01C8]","M":"[\\u004D\\u24C2\\uFF2D\\u1E3E\\u1E40\\u1E42\\u2C6E\\u019C]","N":"[\\u004E\\u24C3\\uFF2E\\u01F8\\u0143\\u00D1\\u1E44\\u0147\\u1E46\\u0145\\u1E4A\\u1E48\\u0220\\u019D\\uA790\\uA7A4]","NJ":"[\\u01CA]","Nj":"[\\u01CB]","O":"[\\u004F\\u24C4\\uFF2F\\u00D2\\u00D3\\u00D4\\u1ED2\\u1ED0\\u1ED6\\u1ED4\\u00D5\\u1E4C\\u022C\\u1E4E\\u014C\\u1E50\\u1E52\\u014E\\u022E\\u0230\\u00D6\\u022A\\u1ECE\\u0150\\u01D1\\u020C\\u020E\\u01A0\\u1EDC\\u1EDA\\u1EE0\\u1EDE\\u1EE2\\u1ECC\\u1ED8\\u01EA\\u01EC\\u00D8\\u01FE\\u0186\\u019F\\uA74A\\uA74C]","OI":"[\\u01A2]","OO":"[\\uA74E]","OU":"[\\u0222]","P":"[\\u0050\\u24C5\\uFF30\\u1E54\\u1E56\\u01A4\\u2C63\\uA750\\uA752\\uA754]","Q":"[\\u0051\\u24C6\\uFF31\\uA756\\uA758\\u024A]","R":"[\\u0052\\u24C7\\uFF32\\u0154\\u1E58\\u0158\\u0210\\u0212\\u1E5A\\u1E5C\\u0156\\u1E5E\\u024C\\u2C64\\uA75A\\uA7A6\\uA782]","S":"[\\u0053\\u24C8\\uFF33\\u1E9E\\u015A\\u1E64\\u015C\\u1E60\\u0160\\u1E66\\u1E62\\u1E68\\u0218\\u015E\\u2C7E\\uA7A8\\uA784]","T":"[\\u0054\\u24C9\\uFF34\\u1E6A\\u0164\\u1E6C\\u021A\\u0162\\u1E70\\u1E6E\\u0166\\u01AC\\u01AE\\u023E\\uA786]","TZ":"[\\uA728]","U":"[\\u0055\\u24CA\\uFF35\\u00D9\\u00DA\\u00DB\\u0168\\u1E78\\u016A\\u1E7A\\u016C\\u00DC\\u01DB\\u01D7\\u01D5\\u01D9\\u1EE6\\u016E\\u0170\\u01D3\\u0214\\u0216\\u01AF\\u1EEA\\u1EE8\\u1EEE\\u1EEC\\u1EF0\\u1EE4\\u1E72\\u0172\\u1E76\\u1E74\\u0244]","V":"[\\u0056\\u24CB\\uFF36\\u1E7C\\u1E7E\\u01B2\\uA75E\\u0245]","VY":"[\\uA760]","W":"[\\u0057\\u24CC\\uFF37\\u1E80\\u1E82\\u0174\\u1E86\\u1E84\\u1E88\\u2C72]","X":"[\\u0058\\u24CD\\uFF38\\u1E8A\\u1E8C]","Y":"[\\u0059\\u24CE\\uFF39\\u1EF2\\u00DD\\u0176\\u1EF8\\u0232\\u1E8E\\u0178\\u1EF6\\u1EF4\\u01B3\\u024E\\u1EFE]","Z":"[\\u005A\\u24CF\\uFF3A\\u0179\\u1E90\\u017B\\u017D\\u1E92\\u1E94\\u01B5\\u0224\\u2C7F\\u2C6B\\uA762]","a":"[\\u0061\\u24D0\\uFF41\\u1E9A\\u00E0\\u00E1\\u00E2\\u1EA7\\u1EA5\\u1EAB\\u1EA9\\u00E3\\u0101\\u0103\\u1EB1\\u1EAF\\u1EB5\\u1EB3\\u0227\\u01E1\\u00E4\\u01DF\\u1EA3\\u00E5\\u01FB\\u01CE\\u0201\\u0203\\u1EA1\\u1EAD\\u1EB7\\u1E01\\u0105\\u2C65\\u0250]","aa":"[\\uA733]","ae":"[\\u00E6\\u01FD\\u01E3]","ao":"[\\uA735]","au":"[\\uA737]","av":"[\\uA739\\uA73B]","ay":"[\\uA73D]","b":"[\\u0062\\u24D1\\uFF42\\u1E03\\u1E05\\u1E07\\u0180\\u0183\\u0253]","c":"[\\u0063\\u24D2\\uFF43\\u0107\\u0109\\u010B\\u010D\\u00E7\\u1E09\\u0188\\u023C\\uA73F\\u2184]","d":"[\\u0064\\u24D3\\uFF44\\u1E0B\\u010F\\u1E0D\\u1E11\\u1E13\\u1E0F\\u0111\\u018C\\u0256\\u0257\\uA77A]","dz":"[\\u01F3\\u01C6]","e":"[\\u0065\\u24D4\\uFF45\\u00E8\\u00E9\\u00EA\\u1EC1\\u1EBF\\u1EC5\\u1EC3\\u1EBD\\u0113\\u1E15\\u1E17\\u0115\\u0117\\u00EB\\u1EBB\\u011B\\u0205\\u0207\\u1EB9\\u1EC7\\u0229\\u1E1D\\u0119\\u1E19\\u1E1B\\u0247\\u025B\\u01DD]","f":"[\\u0066\\u24D5\\uFF46\\u1E1F\\u0192\\uA77C]","g":"[\\u0067\\u24D6\\uFF47\\u01F5\\u011D\\u1E21\\u011F\\u0121\\u01E7\\u0123\\u01E5\\u0260\\uA7A1\\u1D79\\uA77F]","h":"[\\u0068\\u24D7\\uFF48\\u0125\\u1E23\\u1E27\\u021F\\u1E25\\u1E29\\u1E2B\\u1E96\\u0127\\u2C68\\u2C76\\u0265]","hv":"[\\u0195]","i":"[\\u0069\\u24D8\\uFF49\\u00EC\\u00ED\\u00EE\\u0129\\u012B\\u012D\\u00EF\\u1E2F\\u1EC9\\u01D0\\u0209\\u020B\\u1ECB\\u012F\\u1E2D\\u0268\\u0131]","j":"[\\u006A\\u24D9\\uFF4A\\u0135\\u01F0\\u0249]","k":"[\\u006B\\u24DA\\uFF4B\\u1E31\\u01E9\\u1E33\\u0137\\u1E35\\u0199\\u2C6A\\uA741\\uA743\\uA745\\uA7A3]","l":"[\\u006C\\u24DB\\uFF4C\\u0140\\u013A\\u013E\\u1E37\\u1E39\\u013C\\u1E3D\\u1E3B\\u017F\\u0142\\u019A\\u026B\\u2C61\\uA749\\uA781\\uA747]","lj":"[\\u01C9]","m":"[\\u006D\\u24DC\\uFF4D\\u1E3F\\u1E41\\u1E43\\u0271\\u026F]","n":"[\\u006E\\u24DD\\uFF4E\\u01F9\\u0144\\u00F1\\u1E45\\u0148\\u1E47\\u0146\\u1E4B\\u1E49\\u019E\\u0272\\u0149\\uA791\\uA7A5]","nj":"[\\u01CC]","o":"[\\u006F\\u24DE\\uFF4F\\u00F2\\u00F3\\u00F4\\u1ED3\\u1ED1\\u1ED7\\u1ED5\\u00F5\\u1E4D\\u022D\\u1E4F\\u014D\\u1E51\\u1E53\\u014F\\u022F\\u0231\\u00F6\\u022B\\u1ECF\\u0151\\u01D2\\u020D\\u020F\\u01A1\\u1EDD\\u1EDB\\u1EE1\\u1EDF\\u1EE3\\u1ECD\\u1ED9\\u01EB\\u01ED\\u00F8\\u01FF\\u0254\\uA74B\\uA74D\\u0275]","oi":"[\\u01A3]","ou":"[\\u0223]","oo":"[\\uA74F]","p":"[\\u0070\\u24DF\\uFF50\\u1E55\\u1E57\\u01A5\\u1D7D\\uA751\\uA753\\uA755]","q":"[\\u0071\\u24E0\\uFF51\\u024B\\uA757\\uA759]","r":"[\\u0072\\u24E1\\uFF52\\u0155\\u1E59\\u0159\\u0211\\u0213\\u1E5B\\u1E5D\\u0157\\u1E5F\\u024D\\u027D\\uA75B\\uA7A7\\uA783]","s":"[\\u0073\\u24E2\\uFF53\\u015B\\u1E65\\u015D\\u1E61\\u0161\\u1E67\\u1E63\\u1E69\\u0219\\u015F\\u023F\\uA7A9\\uA785\\u1E9B]","ss":"[\\u00DF]","t":"[\\u0074\\u24E3\\uFF54\\u1E6B\\u1E97\\u0165\\u1E6D\\u021B\\u0163\\u1E71\\u1E6F\\u0167\\u01AD\\u0288\\u2C66\\uA787]","tz":"[\\uA729]","u":"[\\u0075\\u24E4\\uFF55\\u00F9\\u00FA\\u00FB\\u0169\\u1E79\\u016B\\u1E7B\\u016D\\u00FC\\u01DC\\u01D8\\u01D6\\u01DA\\u1EE7\\u016F\\u0171\\u01D4\\u0215\\u0217\\u01B0\\u1EEB\\u1EE9\\u1EEF\\u1EED\\u1EF1\\u1EE5\\u1E73\\u0173\\u1E77\\u1E75\\u0289]","v":"[\\u0076\\u24E5\\uFF56\\u1E7D\\u1E7F\\u028B\\uA75F\\u028C]","vy":"[\\uA761]","w":"[\\u0077\\u24E6\\uFF57\\u1E81\\u1E83\\u0175\\u1E87\\u1E85\\u1E98\\u1E89\\u2C73]","x":"[\\u0078\\u24E7\\uFF58\\u1E8B\\u1E8D]","y":"[\\u0079\\u24E8\\uFF59\\u1EF3\\u00FD\\u0177\\u1EF9\\u0233\\u1E8F\\u00FF\\u1EF7\\u1E99\\u1EF5\\u01B4\\u024F\\u1EFF]","z":"[\\u007A\\u24E9\\uFF5A\\u017A\\u1E91\\u017C\\u017E\\u1E93\\u1E95\\u01B6\\u0225\\u0240\\u2C6C\\uA763]"},"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasRedirection":true,"hasBreadcrumb":true},"homeUrl":"https:\/\/www.ezcalculatoronline.com","objectID":2834,"objectType":"post","locale":"en","localeFull":"en_US","overlayImages":{"play":{"name":"Play icon","url":"https:\/\/www.ezcalculatoronline.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","path":"\/home\/dh_7btfqe\/ezcalculatoronline.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-play.png","position":"middle_center"},"gif":{"name":"GIF icon","url":"https:\/\/www.ezcalculatoronline.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","path":"\/home\/dh_7btfqe\/ezcalculatoronline.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/icon-gif.png","position":"middle_center"}},"defautOgImage":"https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/11\/EZCALCULATORONLINE-LOGO-2.png","customPermalinks":true,"isUserRegistered":false,"autoSuggestKeywords":false,"connectSiteUrl":"https:\/\/rankmath.com\/auth?site=https%3A%2F%2Fwww.ezcalculatoronline.com&r=https%3A%2F%2Fwww.ezcalculatoronline.com%2Fsv%2Fwp-json%2Fwp%2Fv2%2Fpages%2F2834%3Fnonce%3D60eb4af2e4","maxTags":5,"trendsIcon":"<svg viewBox=\"0 0 610 610\"><path d=\"M18.85,446,174.32,290.48l58.08,58.08L76.93,504a14.54,14.54,0,0,1-20.55,0L18.83,466.48a14.54,14.54,0,0,1,0-20.55Z\" style=\"fill:#4285f4\"\/><path d=\"M242.65,242.66,377.59,377.6l-47.75,47.75a14.54,14.54,0,0,1-20.55,0L174.37,290.43l47.75-47.75A14.52,14.52,0,0,1,242.65,242.66Z\" style=\"fill:#ea4335\"\/><polygon points=\"319.53 319.53 479.26 159.8 537.34 217.88 377.61 377.62 319.53 319.53\" style=\"fill:#fabb05\"\/><path d=\"M594.26,262.73V118.61h0a16.94,16.94,0,0,0-16.94-16.94H433.2a16.94,16.94,0,0,0-12,28.92L565.34,274.71h0a16.94,16.94,0,0,0,28.92-12Z\" style=\"fill:#34a853\"\/><rect width=\"610\" height=\"610\" style=\"fill:none\"\/><\/svg>","showScore":true,"siteFavIcon":"https:\/\/www.ezcalculatoronline.com\/wp-content\/uploads\/2025\/05\/cropped-ezcaculator-32x32.webp","canUser":{"general":false,"advanced":false,"snippet":false,"social":false,"analysis":false,"analytics":false,"content_ai":false},"showKeywordIntent":true,"isPro":false,"is_front_page":false,"trendsUpgradeLink":"https:\/\/rankmath.com\/pricing\/?utm_source=Plugin&utm_medium=CE%20General%20Tab%20Trends&utm_campaign=WP","trendsUpgradeLabel":"Upgrade","trendsPreviewImage":"https:\/\/www.ezcalculatoronline.com\/wp-content\/plugins\/seo-by-rank-math\/assets\/admin\/img\/trends-preview.jpg","currentEditor":false,"homepageData":{"assessor":{"powerWords":["a cut above","absolute","absolutely","absolutely lowest","absurd","abuse","accurate","accuse","achieve","actionable","adaptable","adequate","admit","adorable","advantage","advice","affordable","aggravate","aggressive","agitated","agonizing","agony","alarmed","alarming","alienated","aligned","alive","all-inclusive","alluring","always","amazing","amp","animated","annihilate","announcing","anonymous","antagonistic","anxious","apocalypse","appalled","approved","approving","argumentative","armageddon","arrogant","ass kicking","assault","assured","astonishing","astounded","astounding","at ease","atrocious","attack","attractive","audacity","authentic","authoritative","authority","avoid","aware","awe-inspiring","awesome","awkward","backbone","backdoor","backed","backlash","backstabbing","badass","balanced","banned","bargain","barrage","basic","battle","beaming","beat down","beating","beautiful","beauty","begging","behind the scenes","belief","belong","best","best-selling","better","beware","big","billion","black market","blacklisted","blast","blessed","blinded","blissful","blood","bloodbath","bloodcurdling","bloody","blunder","blushing","bold","bomb","bona","bona fide","bonanza","bonus","bootleg","bottom line","bountiful","brave","bravery","brazen","break","breaking","breakthrough","breathtaking","bright","brilliant","broke","brutal","budget","buffoon","bullshit","bully","bumbling","buy","cadaver","calm","cancel anytime","capable","captivate","captivating","carefree","case study","cash","cataclysmic","catapult","catastrophe","caution","censored","centered","certain","certainly","certified","challenge","charming","cheap","cheat","cheat-sheet","cheer","cheerful","child-like","clarity","classified","clear","clueless","collapse","colorful","colossal","comfortable","compare","competitive","complete","completely","completeness","comprehensive","compromise","compulsive","concealed","conclusive","condemning","condescending","confess","confession","confessions","confident","confidential","conquer","conscientious","constructive","content","contrary","controlling","controversial","convenient","convert","cool","cooperative","copy","corpse","corrupt","corrupting","courage","courageous","cover-up","covert","coward","cowardly","crammed","crave","crazy","create","creative","cringeworthy","cripple","crisis","critical","crooked","crush","crushing","damaging","danger","dangerous","daring","dazzling","dead","deadline","deadly","death","decadent","deceived","deceptive","deep","defiance","definitely","definitive","defying","dejected","delicious","delight","delighted","delightful","delirious","delivered","demoralizing","deplorable","depraved","desire","desperate","despicable","destiny","destroy","detailed","devastating","devoted","diagnosed","direct","dirty","disadvantages","disastrous","discount","discover","disdainful","disempowered","disgusted","disgusting","dishonest","disillusioned","disoriented","distracted","distraught","distressed","distrustful","divulge","document","dollar","dominate","doomed","double","doubtful","download","dreadful","dreamy","drive","drowning","dumb","dynamic","eager","earnest","easily","easy","economical","ecstatic","edge","effective","efficient","effortless","elated","eliminate","elite","embarrass","embarrassed","embarrassing","emergency","emerging","emphasize","empowered","enchant","encouraged","endorsed","energetic","energy","enormous","enraged","enthusiastic","envy","epic","epidemic","essential","ethical","euphoric","evil","exactly","exasperated","excellent","excited","excitement","exciting","exclusive","exclusivity","excruciating","exhilarated","expensive","expert","explode","exploit","explosive","exposed","exquisite","extra","extraordinary","extremely","exuberant","eye-opening","fail","fail-proof","failure","faith","famous","fantasy","fascinating","fatigued","faux","faux pas","fearless","feast","feeble","festive","fide","fierce","fight","final","fine","fired","first","first ever","flirt","fluid","focus","focused","fool","fooled","foolish","forbidden","force-fed","forever","forgiving","forgotten","formula","fortune","foul","frantic","free","freebie","freedom","frenzied","frenzy","frightening","frisky","frugal","frustrated","fulfill","fulfilled","full","fully","fun","fun-loving","fundamentals","funniest","funny","furious","gambling","gargantuan","genius","genuine","gift","gigantic","giveaway","glamorous","gleeful","glorious","glowing","goddamn","gorgeous","graceful","grateful","gratified","gravity","great","greatest","greatness","greed","greedy","gripping","grit","grounded","growth","guaranteed","guilt","guilt-free","gullible","guts","hack","happiness","happy","harmful","harsh","hate","have you heard","havoc","hazardous","healthy","heart","heartbreaking","heartwarming","heavenly","hell","helpful","helplessness","hero","hesitant","hidden","high tech","highest","highly effective","hilarious","hoak","hoax","honest","honored","hope","hopeful","horribly","horrific","horrifying","horror","hostile","how to","huge","humility","humor","hurricane","hurry","hypnotic","idiot","ignite","illegal","illusive","imagination","immediately","imminently","impatience","impatient","impenetrable","important","impressive","improved","in the zone","incapable","incapacitated","incompetent","inconsiderate","increase","incredible","indecisive","indulgence","indulgent","inexpensive","inferior","informative","infuriated","ingredients","innocent","innovative","insane","insecure","insider","insidious","inspired","inspiring","instant savings","instantly","instructive","insult","intel","intelligent","intense","interesting","intriguing","introducing","invasion","investment","iron-clad","ironclad","irresistible","irs","is here","jackpot","jail","jaw-dropping","jealous","jeopardy","jittery","jovial","joyous","jubilant","judgmental","jumpstart","just arrived","keen","kickass","kickstart","kill","killed","killing","kills","know it all","lame","largest","lascivious","last","last chance","last minute","latest","laugh","laughing","launch","launching","lavishly","lawsuit","lazy","left behind","legendary","legitimate","liberal","liberated","lick","lies","life-changing","lifetime","light","lighthearted","likely","limited","literally","little-known","loathsome","lonely","looming","loser","lost","love","lucrative","lunatic","lurking","lust","luxurious","luxury","lying","magic","magical","magnificent","mainstream","malicious","mammoth","manipulative","marked down","massive","master","masterclass","maul","mediocre","meditative","meltdown","memorability","memorable","menacing","mesmerizing","meticulous","mind-blowing","minimalist","miracle","mired","mischievous","misgiving","missing out","mistake","monetize","money","moneyback","moneygrubbing","monumental","most important","motivated","mouth-watering","murder","mystery","nail","naked","natural","naughty","nazi","nest egg","never","new","nightmare","no good","no obligation","no one talks about","no questions asked","no risk","no strings attached","non-controlling","noted","novelty","now","obnoxious","obsessed","obsession","obvious","odd","off-kilter","off-limits","off-the record","offensive","official","okay","on-demand","open-minded","opportunities","optimistic","ordeal","outlawed","outrageousness","outstanding","overcome","overjoyed","overnight","overwhelmed","packed","painful","painless","painstaking","pale","panic","panicked","paralyzed","pas","passionate","pathetic","pay zero","payback","perfect","peril","perplexed","perspective","pessimistic","pioneering","piranha","pitfall","pitiful","placid","plague","played","playful","pleased","pluck","plummet","plunge","poison","poisonous","polarizing","poor","popular","portfolio","pound","powerful","powerless","practical","preposterous","prestige","price","priceless","pride","prison","privacy","private","privileged","prize","problem","productive","professional","profit","profitable","profound","promiscuous","promising","promote","protect","protected","proven","provocative","provoke","psychological","pummel","punch","punish","pus","quadruple","quality","quarrelsome","quick","quick-start","quickly","quiet","radiant","rare","ravenous","rebellious","recession-proof","reckoning","recognized","recommend","recreate","reduced","reflective","refugee","refund","refundable","reject","relaxed","release","relentless","reliable","remarkable","replicate","report","reprimanding","repulsed","repulsive","research","resentful","resourceful","responsible","responsive","rested","restricted","results","retaliating","reveal","revealing","revenge","revengeful","revisited","revolting","revolutionary","reward","rich","ridiculous","risky","riveting","rookie","rowdy","ruin","rules","ruthless","sabotaging","sacred","sadistic","sadly","sadness","safe","safety","sale","sampler","sarcastic","satisfied","savage","savagery","save","savings","savvy","scam","scandal","scandalous","scarce","scared","scary","scornful","scream","searing","secret","secret agenda","secret plot","secrets","secure","security","seductive","seething","seize","selected","self-hating","self-sufficient","sensational","senseless","sensual","serene","seriously","severe","sex","sexy","shaking","shameful","shameless","shaming","shatter","shellacking","shocking","should","shrewd","sick and tired","signs","silly","simple","simplicity","simplified","simplistic","sincere","sinful","sins","six-figure","sizable","sizzle","sizzled","sizzles","sizzling","sizzlingly","skill","skyrocket","slaughter","slave","sleazy","sleeping","sly","smash","smiling","smug","smuggle","smuggled","sneak-peek","sneaky","sniveling","snob","snooty","snotty","soar","soaring","solid","solution","spank","special","spectacular","speedy","spell-binding","spine","spirit","spirited","spiteful","spoiler","spontaneous","spotlight","spunky","squirming","stable","staggering","startling","steady","steal","stealthy","steamy","step-by-step","still","stoic","stop","strange","strangle","strategy","stressed","strong","strongly suggest","struggle","stuck up","studies","stunning","stupid","stupid-simple","sturdy","sublime","succeed","success","successful","suck","suddenly","suffer","sunny","super","super-human","superb","supercharge","superior","supported","supportive","sure","sure fire","surefire","surge","surging","surprise","surprised","surprising","survival","survive","suspicious","sweaty","swoon","swoon-worthy","tailspin","tank","tantalizing","targeted","tawdry","tease","technology","teetering","tempting","tenacious","tense","terrible","terrific","terrified","terrifying","terror","terrorist","tested","thankful","the truth","threaten","threatened","thrilled","thrilling","thug","ticked off","tickled","timely","today","torture","toxic","track record","trade secret","tragedy","tragic","transform","transparency","trap","trapped","trauma","traumatized","treacherous","treasure","tremendous","trend","tricks","triggers","triple","triumph","truly","trusting","trustworthy","truth","truthful","turbo-charge","turbocharges","tweaks","twitching","ultimate","unadulterated","unassuming","unauthorized","unbelievable","unburdened","uncaring","uncensored","uncertain","uncomfortable","unconditional","uncontrollable","unconventional","uncovered","undeniable","under priced","undercover","underground","underhanded","underused","unexpected","unforgettable","unheard of","unhurried","uninterested","unique","unjustified","unknowingly","unleashed","unlimited","unlock","unparalleled","unpopular","unreliable","unresponsive","unseen","unstable","unstoppable","unsure","unsurpassed","untapped","unusual","up-sell","upbeat","uplifted","uplifting","urge","urgent","useful","useless","validate","valor","valuable","value","vanquish","vaporize","venomous","verify","vibrant","vicious","victim","victory","vigorous","vilified","vindictive","violated","violent","volatile","vulnerable","waiting","wanted","wanton","warning","waste","weak","wealth","weird","what no one tells you","whip","whopping","wicked","wild","willpower","withheld","wonderful","wondrous","woozy","world","worry","worst","worthwhile","wounded","wreaking","youthful","zen","zinger"],"diacritics":true,"researchesTests":["contentHasTOC","contentHasShortParagraphs","contentHasAssets","keywordInTitle","keywordInMetaDescription","keywordInPermalink","keywordIn10Percent","keywordInContent","keywordInSubheadings","keywordInImageAlt","keywordDensity","keywordNotUsed","lengthContent","lengthPermalink","linksHasInternal","linksHasExternals","linksNotAllExternals","titleStartWithKeyword","titleSentiment","titleHasPowerWords","titleHasNumber","hasContentAI"],"hasBreadcrumb":true,"serpData":{"title":"%sitename% %sep% %sitedesc%","description":"%sitedesc%","titleTemplate":"%sitename% %page% %sep% %sitedesc%","descriptionTemplate":"","focusKeywords":"","breadcrumbTitle":"Home","robots":{"index":true},"advancedRobots":{"max-snippet":"-1","max-video-preview":"-1","max-image-preview":"large"},"facebookTitle":"","facebookDescription":"","facebookImage":"","facebookImageID":""}}},"tocTitle":"Table of Contents","tocExcludeHeadings":[],"listStyle":"ul"},"_links":{"self":[{"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/pages\/2834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/comments?post=2834"}],"version-history":[{"count":10,"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/pages\/2834\/revisions"}],"predecessor-version":[{"id":7404,"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/pages\/2834\/revisions\/7404"}],"up":[{"embeddable":true,"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/pages\/4298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/media\/4294"}],"wp:attachment":[{"href":"https:\/\/www.ezcalculatoronline.com\/wp-json\/wp\/v2\/media?parent=2834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}