It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://iformat.io/avif-to-png/

  1.  
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5.    <title>iformat.io</title>
  6.    <meta name="description"
  7.          content="iFormat.io - Your ultimate file converter and compressor. Convert JPG, PNG, HEIC, WEBP to JPG, PNG, and PDF formats. Fast and reliable file conversion made easy">
  8.    <meta charset="UTF-8">
  9.    <meta http-equiv="X-UA-Compatible" content="IE=edge">
  10.    <link rel="icon" href="/static/logo.png" type="image/png">
  11.  
  12.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  13.    <link rel="canonical" href="https://iformat.io/avif-to-png/"/>
  14.    <meta name="yandex-verification" content="b06651e96519752b"/>
  15.    <input type="hidden" name="csrfmiddlewaretoken" value="BPewQxQ5Z3TzpNCZisG4u54Gq8QvTPCq785FC897XRcyd7moDibmt8GVEStnjGjT">
  16.    <!-- Google tag (gtag.js) -->
  17.    <script async src="https://www.googletagmanager.com/gtag/js?id=G-K5PN90MCSZ"></script>
  18.    <script>
  19.        window.dataLayer = window.dataLayer || [];
  20.  
  21.        function gtag() {
  22.            dataLayer.push(arguments);
  23.        }
  24.  
  25.        gtag('js', new Date());
  26.  
  27.        gtag('config', 'G-K5PN90MCSZ');
  28.    </script>
  29.    <meta name="msvalidate.01" content="5CAE4943CEBF239CD78C1EE61E777102"/>
  30.  
  31.  
  32.  
  33.    <!-- Tailwind CSS -->
  34.    <script src="https://cdn.tailwindcss.com"></script>
  35.  
  36.    
  37.  
  38.    
  39.  
  40.  
  41.  
  42.    
  43.        
  44.  
  45.        
  46.  
  47.        
  48.  
  49.  
  50.        
  51.    
  52.  
  53. </head>
  54. <body>
  55.  
  56.  
  57. <!-- Improved Header -->
  58. <header class="bg-white backdrop-blur-lg sticky top-0 z-50">
  59.    <div class="container mx-auto px-4 lg:px-6">
  60.        <!-- Main Header Row -->
  61.        <div class="flex items-center justify-between h-16">
  62.            <!-- Logo -->
  63.            <div class="flex items-center space-x-3">
  64.                <a href="/" class="flex items-center">
  65.                    <img src="/static/logo.svg"
  66.                         alt="iformat.io Logo"
  67.                         class="h-8 w-auto mr-2"
  68.                         width="120"
  69.                         height="32"
  70.                         loading="eager"
  71.                         decoding="sync">
  72.                    <span class="text-2xl font-normal text-blue-600">iformat.io</span>
  73.                </a>
  74.  
  75.                <!-- Desktop Navigation -->
  76.                <nav class="hidden lg:flex items-center space-x-1 ml-8">
  77.                    <!-- Convert Dropdown -->
  78.                    <div class="relative dropdown group">
  79.                        <button class="flex items-center px-4 py-2 text-gray-800 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-all duration-200">
  80.                            Convert
  81.                            <svg class="w-4 h-4 ml-1 transition-transform duration-200 group-hover:rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  82.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
  83.                            </svg>
  84.                        </button>
  85.  
  86.                        <!-- Mega Dropdown Menu -->
  87.                        <div class="dropdown-menu absolute top-full left-0 mt-1 bg-white rounded-xl shadow-xl border border-gray-100 z-50 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200">
  88.                            <div class="p-6">
  89.                                <div class="grid grid-cols-5 gap-6 min-w-[800px]">
  90.                                    <!-- Image Tools -->
  91.                                    <div class="space-y-3">
  92.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  93.                                            <div class="w-7 h-7 bg-gradient-to-br from-green-500 to-emerald-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  94.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  95.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
  96.                                                </svg>
  97.                                            </div>
  98.                                            Image
  99.                                        </div>
  100.                                        <ul class="space-y-1">
  101.                                            <li><a href="/image-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">Image Converter</a></li>
  102.                                            <li><a href="/jpg-to-png" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">JPG to PNG</a></li>
  103.                                            <li><a href="/png-to-jpg" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">PNG to JPG</a></li>
  104.                                            <li><a href="/heic-to-jpg" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">HEIC to JPG</a></li>
  105.                                        </ul>
  106.                                    </div>
  107.  
  108.                                    <!-- Audio Tools -->
  109.                                    <div class="space-y-3">
  110.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  111.                                            <div class="w-7 h-7 bg-gradient-to-br from-purple-500 to-violet-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  112.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  113.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"/>
  114.                                                </svg>
  115.                                            </div>
  116.                                            Audio
  117.                                        </div>
  118.                                        <ul class="space-y-1">
  119.                                            <li><a href="/audio-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">Audio Converter</a></li>
  120.                                            <li><a href="/mp3-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">MP3 Converter</a></li>
  121.                                            <li><a href="/mp4-to-mp3" class="block px-3 py-2 text-sm text-gray-700 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">MP4 to MP3</a></li>
  122.                                            <li><a href="/wav-to-mp3" class="block px-3 py-2 text-sm text-gray-700 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">WAV to MP3</a></li>
  123.                                        </ul>
  124.                                    </div>
  125.  
  126.                                    <!-- Video Tools -->
  127.                                    <div class="space-y-3">
  128.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  129.                                            <div class="w-7 h-7 bg-gradient-to-br from-blue-500 to-cyan-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  130.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  131.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/>
  132.                                                </svg>
  133.                                            </div>
  134.                                            Video
  135.                                        </div>
  136.                                        <ul class="space-y-1">
  137.                                            <li><a href="/video-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Video Converter</a></li>
  138.                                            <li><a href="/mp4-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">MP4 Converter</a></li>
  139.                                            <li><a href="/avi-to-mp4" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">AVI to MP4</a></li>
  140.                                            <li><a href="/mov-to-mp4" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">MOV to MP4</a></li>
  141.                                        </ul>
  142.                                    </div>
  143.  
  144.                                    <!-- Document Tools -->
  145.                                    <div class="space-y-3">
  146.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  147.                                            <div class="w-7 h-7 bg-gradient-to-br from-blue-500 to-indigo-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  148.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  149.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
  150.                                                </svg>
  151.                                            </div>
  152.                                            Document
  153.                                        </div>
  154.                                        <ul class="space-y-1">
  155.                                            <li><a href="/document-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Document Converter</a></li>
  156.                                            <li><a href="/pdf-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">PDF Converter</a></li>
  157.                                            <li><a href="/pdf-to-jpg" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">PDF to JPG</a></li>
  158.                                            <li><a href="/docx-to-pdf" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">DOCX to PDF</a></li>
  159.                                        </ul>
  160.                                    </div>
  161.  
  162.                                    <!-- Other Tools -->
  163.                                    <div class="space-y-3">
  164.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  165.                                            <div class="w-7 h-7 bg-gradient-to-br from-orange-500 to-red-500 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  166.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  167.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
  168.                                                </svg>
  169.                                            </div>
  170.                                            Others
  171.                                        </div>
  172.                                        <ul class="space-y-1">
  173.                                            <li><a href="/time-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-orange-600 hover:bg-orange-50 rounded-md transition-colors">Time Converter</a></li>
  174.                                            <li><a href="/unit-converter" class="block px-3 py-2 text-sm text-gray-700 hover:text-orange-600 hover:bg-orange-50 rounded-md transition-colors">Unit Converter</a></li>
  175.                                        </ul>
  176.                                    </div>
  177.                                </div>
  178.                            </div>
  179.                        </div>
  180.                    </div>
  181.  
  182.                    <!-- Compress Dropdown -->
  183.                    <div class="relative dropdown group">
  184.                        <button class="flex items-center px-4 py-2 text-gray-800 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-all duration-200">
  185.                            Compress
  186.                            <svg class="w-4 h-4 ml-1 transition-transform duration-200 group-hover:rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  187.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
  188.                            </svg>
  189.                        </button>
  190.  
  191.                        <div class="dropdown-menu absolute top-full left-0 mt-1 bg-white rounded-xl shadow-xl border border-gray-100 z-50 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200">
  192.                            <div class="p-6">
  193.                                <div class="grid grid-cols-2 gap-6 min-w-[400px]">
  194.                                    <!-- Image Compression -->
  195.                                    <div class="space-y-3">
  196.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  197.                                            <div class="w-7 h-7 bg-gradient-to-br from-green-500 to-emerald-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  198.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  199.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/>
  200.                                                </svg>
  201.                                            </div>
  202.                                            Image
  203.                                        </div>
  204.                                        <ul class="space-y-1">
  205.                                            <li><a href="/image-compressor" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">Image Compressor</a></li>
  206.                                            <li><a href="/png-compressor" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">PNG Compressor</a></li>
  207.                                            <li><a href="/jpg-compressor" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">JPG Compressor</a></li>
  208.                                            <li><a href="/compress-png-to-100kb" class="block px-3 py-2 text-sm text-gray-700 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">Compress PNG to 100kb</a></li>
  209.                                        </ul>
  210.                                    </div>
  211.  
  212.                                    <!-- Document Compression -->
  213.                                    <div class="space-y-3">
  214.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  215.                                            <div class="w-7 h-7 bg-gradient-to-br from-blue-500 to-indigo-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  216.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  217.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
  218.                                                </svg>
  219.                                            </div>
  220.                                            Document
  221.                                        </div>
  222.                                        <ul class="space-y-1">
  223.                                            <li><a href="/document-compressor" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Document Compressor</a></li>
  224.                                            <li><a href="/pdf-compressor" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">PDF Compressor</a></li>
  225.                                            <li><a href="/compress-pdf-to-1mb" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Compress PDF to 1MB</a></li>
  226.                                            <li><a href="/compress-pdf-to-500kb" class="block px-3 py-2 text-sm text-gray-700 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Compress PDF to 500kb</a></li>
  227.                                        </ul>
  228.                                    </div>
  229.                                </div>
  230.                            </div>
  231.                        </div>
  232.                    </div>
  233.  
  234.                    <!-- Other Navigation Links -->
  235.                    <a href="/blog" class="px-4 py-2 text-gray-800 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-colors">Blog</a>
  236.                    <a href="/donate" class="px-4 py-2 text-gray-800 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-colors">Donate</a>
  237.                </nav>
  238.            </div>
  239.  
  240.            <!-- Right Side Actions -->
  241.            <div class="flex items-center space-x-3">
  242.                <!-- Search Button -->
  243.                <button id="searchBtn" class="p-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-lg transition-colors" aria-label="Search">
  244.                    <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  245.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
  246.                    </svg>
  247.                </button>
  248.  
  249.                <!-- Authentication Section - Desktop Only -->
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.                <!-- Mobile Menu Button -->
  316.                <button id="mobileMenuBtn" class="lg:hidden p-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-lg transition-colors" aria-label="Open mobile menu">
  317.                    <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  318.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/>
  319.                    </svg>
  320.                </button>
  321.            </div>
  322.        </div>
  323.    </div>
  324. </header>
  325.  
  326. <!-- Enhanced Search Overlay -->
  327. <div id="searchOverlay" class="fixed inset-0 bg-black/20 backdrop-blur-sm z-50 hidden">
  328.    <div class="flex items-start justify-center pt-20 px-4">
  329.        <div class="w-full max-w-4xl bg-white rounded-xl shadow-2xl">
  330.            <div class="p-6">
  331.                <!-- Search Input Header -->
  332.                <div class="flex items-center mb-4">
  333.                    <svg class="w-5 h-5 text-gray-400 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  334.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
  335.                    </svg>
  336.                    <input type="text" id="searchInput" placeholder="Search tools and converters..." class="flex-1 text-lg search-input border rounded-lg px-4 py-3 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" autocomplete="off">
  337.                    <button id="closeSearch" class="ml-3 p-2 text-gray-400 hover:text-gray-700 transition-colors">
  338.                        <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  339.                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
  340.                        </svg>
  341.                    </button>
  342.                </div>
  343.  
  344.                <!-- Search Results Container -->
  345.                <div id="searchResults" class="hidden">
  346.                    <div class="border-t pt-4">
  347.                        <div class="text-sm font-semibold text-gray-900 mb-3">
  348.                            <span id="resultsCount">0</span> Tools Found
  349.                        </div>
  350.                        <div id="searchResultsList" class="space-y-2 max-h-80 overflow-y-auto">
  351.                            <!-- Search results will be inserted here -->
  352.                        </div>
  353.                    </div>
  354.                </div>
  355.  
  356.                <!-- Popular Searches -->
  357.                <div id="popularSearches" class="border-t pt-4">
  358.                    <div class="text-sm font-semibold text-gray-900 mb-3">Popular Searches</div>
  359.                    <div class="flex flex-wrap gap-2">
  360.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-800 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="Image Compressor">Image Compressor</span>
  361.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-800 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="MP3 Converter">MP3 Converter</span>
  362.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-800 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="Video Converter">Video Converter</span>
  363.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-800 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="Time Converter">Time Converter</span>
  364.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-800 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="JPG to PNG">JPG to PNG</span>
  365.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-800 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="AVI to MP4">AVI to MP4</span>
  366.                    </div>
  367.                </div>
  368.  
  369.                <!-- No Results State -->
  370.                <div id="noResults" class="hidden border-t pt-4">
  371.                    <div class="text-center py-8">
  372.                        <svg class="w-12 h-12 text-gray-400 mx-auto mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  373.                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.172 16.172a4 4 0 015.656 0M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
  374.                        </svg>
  375.                        <div class="text-lg font-medium text-gray-900 mb-2">No tools found</div>
  376.                        <p class="text-gray-700 mb-4">Try searching for a different term or browse our categories.</p>
  377.                        <button id="browseAllTools" class="text-blue-600 hover:text-blue-700 font-medium">Browse All Tools</button>
  378.                    </div>
  379.                </div>
  380.            </div>
  381.        </div>
  382.    </div>
  383. </div>
  384.  
  385. <!-- Mobile Menu -->
  386. <div id="mobileMenu" class="lg:hidden fixed inset-y-0 left-0 w-80 bg-white shadow-xl z-50 mobile-menu transform -translate-x-full transition-transform duration-300 ease-in-out">
  387.    <div class="flex flex-col h-full">
  388.        <!-- Mobile Header -->
  389.        <div class="flex items-center justify-between p-6 border-b border-gray-200">
  390.            <div class="flex items-center space-x-3">
  391.                <img src="/static/logo.svg" alt="iformat.io Logo" class="h-8 w-auto">
  392.                <span class="text-xl font-normal text-blue-600">iformat.io</span>
  393.            </div>
  394.            <button id="closeMobileMenu" class="p-2 text-gray-700 hover:text-gray-900 transition-colors"
  395.                                aria-label="Close mobile menu">
  396.                <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  397.                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
  398.                </svg>
  399.            </button>
  400.        </div>
  401.  
  402.        <!-- Mobile Navigation -->
  403.        <div class="flex-1 overflow-y-auto p-6">
  404.            <!-- Tools Section -->
  405.            <div class="mb-6">
  406.                <div class="text-sm font-semibold text-gray-900 mb-4">TOOLS</div>
  407.                <div class="space-y-4">
  408.                    <!-- Image Tools -->
  409.                    <div>
  410.                        <div class="flex items-center text-green-600 mb-3">
  411.                            <div class="w-6 h-6 bg-gradient-to-br from-green-500 to-emerald-600 rounded-lg mr-3 flex items-center justify-center">
  412.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  413.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16"/>
  414.                                </svg>
  415.                            </div>
  416.                            <span class="font-medium">Image</span>
  417.                        </div>
  418.                        <div class="ml-9 space-y-2">
  419.                            <a href="/image-converter" class="block text-sm text-gray-700 py-1 hover:text-green-600 transition-colors">Image Converter</a>
  420.                            <a href="/jpg-to-png" class="block text-sm text-gray-700 py-1 hover:text-green-600 transition-colors">JPG to PNG</a>
  421.                            <a href="/png-to-jpg" class="block text-sm text-gray-700 py-1 hover:text-green-600 transition-colors">PNG to JPG</a>
  422.                        </div>
  423.                    </div>
  424.  
  425.                    <!-- Audio Tools -->
  426.                    <div>
  427.                        <div class="flex items-center text-purple-600 mb-3">
  428.                            <div class="w-6 h-6 bg-gradient-to-br from-purple-500 to-violet-600 rounded-lg mr-3 flex items-center justify-center">
  429.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  430.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13"/>
  431.                                </svg>
  432.                            </div>
  433.                            <span class="font-medium">Audio</span>
  434.                        </div>
  435.                        <div class="ml-9 space-y-2">
  436.                            <a href="/audio-converter" class="block text-sm text-gray-700 py-1 hover:text-purple-600 transition-colors">Audio Converter</a>
  437.                            <a href="/mp3-converter" class="block text-sm text-gray-700 py-1 hover:text-purple-600 transition-colors">MP3 Converter</a>
  438.                        </div>
  439.                    </div>
  440.  
  441.                    <!-- Video Tools -->
  442.                    <div>
  443.                        <div class="flex items-center text-blue-600 mb-3">
  444.                            <div class="w-6 h-6 bg-gradient-to-br from-blue-500 to-cyan-600 rounded-lg mr-3 flex items-center justify-center">
  445.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  446.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14"/>
  447.                                </svg>
  448.                            </div>
  449.                            <span class="font-medium">Video</span>
  450.                        </div>
  451.                        <div class="ml-9 space-y-2">
  452.                            <a href="/video-converter" class="block text-sm text-gray-700 py-1 hover:text-blue-600 transition-colors">Video Converter</a>
  453.                            <a href="/mp4-converter" class="block text-sm text-gray-700 py-1 hover:text-blue-600 transition-colors">MP4 Converter</a>
  454.                        </div>
  455.                    </div>
  456.  
  457.                    <!-- Other Tools -->
  458.                    <div>
  459.                        <div class="flex items-center text-orange-600 mb-3">
  460.                            <div class="w-6 h-6 bg-gradient-to-br from-orange-500 to-red-500 rounded-lg mr-3 flex items-center justify-center">
  461.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  462.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
  463.                                </svg>
  464.                            </div>
  465.                            <span class="font-medium">Others</span>
  466.                        </div>
  467.                        <div class="ml-9 space-y-2">
  468.                            <a href="/time-converter" class="block text-sm text-gray-700 py-1 hover:text-orange-600 transition-colors">Time Converter</a>
  469.                            <a href="/unit-converter" class="block text-sm text-gray-700 py-1 hover:text-orange-600 transition-colors">Unit Converter</a>
  470.                        </div>
  471.                    </div>
  472.                </div>
  473.            </div>
  474.  
  475.            <!-- Navigation Links -->
  476.            <div class="mb-6 space-y-2">
  477.                <a href="/blog" class="block px-3 py-2 text-gray-800 hover:text-blue-600 hover:bg-gray-50 rounded-md font-medium transition-colors">Blog</a>
  478.                <a href="/donate" class="block px-3 py-2 text-gray-800 hover:text-blue-600 hover:bg-gray-50 rounded-md font-medium transition-colors">Donate</a>
  479.            </div>
  480.        </div>
  481.  
  482.        <!-- Mobile Auth Section -->
  483.        <div class="border-t border-gray-200 p-6">
  484.            
  485.                <!-- Guest Mobile User -->
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.            
  495.        </div>
  496.    </div>
  497. </div>
  498.  
  499. <!-- Mobile Menu Overlay -->
  500. <div id="mobileMenuOverlay" class="lg:hidden fixed inset-0 bg-black/50 z-40 hidden"></div>
  501.  
  502. <style>
  503. /* User Avatar Styling */
  504. .user-avatar {
  505.    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  506.    border: 2px solid white;
  507.    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  508. }
  509.  
  510. /* Enhanced Dropdown Animations */
  511. .dropdown .dropdown-menu {
  512.    transform: translateY(-10px);
  513.    transition: all 0.2s ease-out;
  514. }
  515.  
  516. .dropdown:hover .dropdown-menu,
  517. .dropdown.group:hover .dropdown-menu {
  518.    transform: translateY(0);
  519. }
  520.  
  521. /* Mobile Menu Animations */
  522. .mobile-menu.open {
  523.    transform: translateX(0);
  524. }
  525.  
  526. /* Search Overlay Styling */
  527. .search-overlay {
  528.    animation: fadeIn 0.2s ease-out;
  529. }
  530.  
  531. @keyframes fadeIn {
  532.    from { opacity: 0; }
  533.    to { opacity: 1; }
  534. }
  535.  
  536. .search-input {
  537.    background: rgba(255, 255, 255, 0.9);
  538.    border: 1px solid rgba(59, 130, 246, 0.3);
  539.    transition: all 0.2s ease;
  540. }
  541.  
  542. .search-input:focus {
  543.    border-color: #3b82f6;
  544.    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
  545. }
  546.  
  547. /* Search Result Items */
  548. .search-result-item {
  549.    display: flex;
  550.    align-items: center;
  551.    padding: 12px;
  552.    border-radius: 8px;
  553.    cursor: pointer;
  554.    transition: all 0.2s ease;
  555.    border: 1px solid transparent;
  556. }
  557.  
  558. .search-result-item:hover {
  559.    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
  560.    border-color: #e2e8f0;
  561.    transform: translateY(-1px);
  562. }
  563.  
  564. .search-result-item.selected {
  565.    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  566.    border-color: #3b82f6;
  567. }
  568.  
  569. .search-result-icon {
  570.    width: 40px;
  571.    height: 40px;
  572.    border-radius: 10px;
  573.    display: flex;
  574.    align-items: center;
  575.    justify-content: center;
  576.    margin-right: 12px;
  577.    flex-shrink: 0;
  578. }
  579.  
  580. .category-image { background: linear-gradient(135deg, #10b981 0%, #059669 100%); }
  581. .category-audio { background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%); }
  582. .category-video { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); }
  583. .category-time { background: linear-gradient(135deg, #f97316 0%, #ea580c 100%); }
  584.  
  585. /* Scrollbar Styling */
  586. #searchResultsList::-webkit-scrollbar {
  587.    width: 6px;
  588. }
  589.  
  590. #searchResultsList::-webkit-scrollbar-track {
  591.    background: #f1f1f1;
  592.    border-radius: 3px;
  593. }
  594.  
  595. #searchResultsList::-webkit-scrollbar-thumb {
  596.    background: #c1c1c1;
  597.    border-radius: 3px;
  598. }
  599.  
  600. #searchResultsList::-webkit-scrollbar-thumb:hover {
  601.    background: #a8a8a8;
  602. }
  603.  
  604. /* Responsive Design */
  605. @media (max-width: 1024px) {
  606.    .dropdown-menu {
  607.        position: fixed !important;
  608.        top: 4rem !important;
  609.        left: 1rem !important;
  610.        right: 1rem !important;
  611.        width: auto !important;
  612.        min-width: auto !important;
  613.    }
  614.  
  615.    .dropdown-menu .grid {
  616.        grid-template-columns: repeat(2, 1fr) !important;
  617.        gap: 1rem !important;
  618.    }
  619. }
  620.  
  621. /* Accessibility Improvements */
  622. @media (prefers-reduced-motion: reduce) {
  623.    * {
  624.        animation-duration: 0.01ms !important;
  625.        animation-iteration-count: 1 !important;
  626.        transition-duration: 0.01ms !important;
  627.    }
  628. }
  629.  
  630. /* Focus Styles */
  631. button:focus-visible,
  632. a:focus-visible {
  633.    outline: 2px solid #3b82f6;
  634.    outline-offset: 2px;
  635. }
  636. </style>
  637.  
  638. <script>
  639. // Enhanced Header Functionality
  640. class HeaderManager {
  641.    constructor() {
  642.        this.initializeSearch();
  643.        this.initializeMobileMenu();
  644.        this.initializeDropdowns();
  645.        this.bindEvents();
  646.    }
  647.  
  648.    initializeSearch() {
  649.        this.searchBtn = document.getElementById('searchBtn');
  650.        this.searchOverlay = document.getElementById('searchOverlay');
  651.        this.searchInput = document.getElementById('searchInput');
  652.        this.closeSearch = document.getElementById('closeSearch');
  653.        this.searchResults = document.getElementById('searchResults');
  654.        this.searchResultsList = document.getElementById('searchResultsList');
  655.        this.popularSearches = document.getElementById('popularSearches');
  656.        this.noResults = document.getElementById('noResults');
  657.        this.resultsCount = document.getElementById('resultsCount');
  658.  
  659.        this.selectedIndex = -1;
  660.        this.currentResults = [];
  661.  
  662.        this.initializeTools();
  663.    }
  664.  
  665.    initializeMobileMenu() {
  666.        this.mobileMenuBtn = document.getElementById('mobileMenuBtn');
  667.        this.mobileMenu = document.getElementById('mobileMenu');
  668.        this.mobileMenuOverlay = document.getElementById('mobileMenuOverlay');
  669.        this.closeMobileMenu = document.getElementById('closeMobileMenu');
  670.    }
  671.  
  672.    initializeDropdowns() {
  673.        // Enhanced dropdown functionality for better UX
  674.        const dropdowns = document.querySelectorAll('.dropdown');
  675.        dropdowns.forEach(dropdown => {
  676.            const menu = dropdown.querySelector('.dropdown-menu');
  677.            let timeout;
  678.  
  679.            dropdown.addEventListener('mouseenter', () => {
  680.                clearTimeout(timeout);
  681.                menu.style.display = 'block';
  682.                setTimeout(() => {
  683.                    menu.classList.add('opacity-100', 'visible');
  684.                    menu.classList.remove('opacity-0', 'invisible');
  685.                }, 10);
  686.            });
  687.  
  688.            dropdown.addEventListener('mouseleave', () => {
  689.                menu.classList.add('opacity-0', 'invisible');
  690.                menu.classList.remove('opacity-100', 'visible');
  691.                timeout = setTimeout(() => {
  692.                    menu.style.display = 'none';
  693.                }, 200);
  694.            });
  695.        });
  696.    }
  697.  
  698.    initializeTools() {
  699.        this.tools = [
  700.            // Image Tools
  701.            { name: 'Image Converter', category: 'image', url: '/image-converter', description: 'Convert between different image formats', keywords: ['image', 'convert', 'format', 'jpg', 'png', 'gif'] },
  702.            { name: 'JPG to PNG', category: 'image', url: '/jpg-to-png', description: 'Convert JPG images to PNG format', keywords: ['jpg', 'jpeg', 'png', 'convert'] },
  703.            { name: 'PNG to JPG', category: 'image', url: '/png-to-jpg', description: 'Convert PNG images to JPG format', keywords: ['png', 'jpg', 'jpeg', 'convert'] },
  704.            { name: 'HEIC to JPG', category: 'image', url: '/heic-to-jpg', description: 'Convert HEIC images to JPG format', keywords: ['heic', 'jpg', 'jpeg', 'convert', 'apple'] },
  705.            // Audio Tools
  706.            { name: 'Audio Converter', category: 'audio', url: '/audio-converter', description: 'Convert between different audio formats', keywords: ['audio', 'convert', 'mp3', 'wav', 'flac'] },
  707.            { name: 'MP3 Converter', category: 'audio', url: '/mp3-converter', description: 'Convert audio files to MP3 format', keywords: ['mp3', 'convert', 'audio'] },
  708.            { name: 'MP4 to MP3', category: 'audio', url: '/mp4-to-mp3', description: 'Convert MP4 files to MP3 format', keywords: ['mp4', 'mp3', 'convert'] },
  709.            { name: 'WAV to MP3', category: 'audio', url: '/wav-to-mp3', description: 'Convert WAV files to MP3 format', keywords: ['wav', 'mp3', 'convert'] },
  710.            // Video Tools
  711.            { name: 'Video Converter', category: 'video', url: '/video-converter', description: 'Convert between different video formats', keywords: ['video', 'convert', 'mp4', 'avi', 'mov'] },
  712.            { name: 'MP4 Converter', category: 'video', url: '/mp4-converter', description: 'Convert videos to MP4 format', keywords: ['mp4', 'convert', 'video'] },
  713.            { name: 'AVI to MP4', category: 'video', url: '/avi-to-mp4', description: 'Convert AVI videos to MP4 format', keywords: ['avi', 'mp4', 'convert'] },
  714.            { name: 'MOV to MP4', category: 'video', url: '/mov-to-mp4', description: 'Convert MOV videos to MP4 format', keywords: ['mov', 'mp4', 'convert'] },
  715.            // Other Tools
  716.            { name: 'Time Converter', category: 'time', url: '/time-converter', description: 'Convert between different time zones', keywords: ['time', 'timezone', 'convert', 'utc'] },
  717.            { name: 'Unit Converter', category: 'unit', url: '/unit-converter', description: 'Convert between different units', keywords: ['unit', 'convert', 'measurement'] }
  718.        ];
  719.    }
  720.  
  721.    bindEvents() {
  722.        // Search Events
  723.        if (this.searchBtn) {
  724.            this.searchBtn.addEventListener('click', () => this.openSearch());
  725.        }
  726.  
  727.        if (this.closeSearch) {
  728.            this.closeSearch.addEventListener('click', () => this.closeSearchOverlay());
  729.        }
  730.  
  731.        if (this.searchOverlay) {
  732.            this.searchOverlay.addEventListener('click', (e) => {
  733.                if (e.target === this.searchOverlay) {
  734.                    this.closeSearchOverlay();
  735.                }
  736.            });
  737.        }
  738.  
  739.        if (this.searchInput) {
  740.            this.searchInput.addEventListener('input', (e) => this.handleSearch(e.target.value));
  741.            this.searchInput.addEventListener('keydown', (e) => this.handleKeydown(e));
  742.        }
  743.  
  744.        // Mobile Menu Events
  745.        if (this.mobileMenuBtn) {
  746.            this.mobileMenuBtn.addEventListener('click', () => this.openMobileMenu());
  747.        }
  748.  
  749.        if (this.closeMobileMenu) {
  750.            this.closeMobileMenu.addEventListener('click', () => this.closeMobileMenuOverlay());
  751.        }
  752.  
  753.        if (this.mobileMenuOverlay) {
  754.            this.mobileMenuOverlay.addEventListener('click', () => this.closeMobileMenuOverlay());
  755.        }
  756.  
  757.        // Popular Search Tags
  758.        document.querySelectorAll('.popular-search-tag').forEach(tag => {
  759.            tag.addEventListener('click', (e) => {
  760.                const searchTerm = e.target.dataset.search;
  761.                this.performSearch(searchTerm);
  762.            });
  763.        });
  764.  
  765.        // Keyboard Events
  766.        document.addEventListener('keydown', (e) => {
  767.            if (e.key === 'Escape') {
  768.                this.closeSearchOverlay();
  769.                this.closeMobileMenuOverlay();
  770.            }
  771.        });
  772.    }
  773.  
  774.    // Search Methods
  775.    openSearch() {
  776.        if (this.searchOverlay) {
  777.            this.searchOverlay.classList.remove('hidden');
  778.            document.body.style.overflow = 'hidden';
  779.            setTimeout(() => {
  780.                if (this.searchInput) {
  781.                    this.searchInput.focus();
  782.                }
  783.            }, 100);
  784.        }
  785.    }
  786.  
  787.    closeSearchOverlay() {
  788.        if (this.searchOverlay) {
  789.            this.searchOverlay.classList.add('hidden');
  790.            document.body.style.overflow = 'auto';
  791.            if (this.searchInput) {
  792.                this.searchInput.value = '';
  793.            }
  794.            this.showDefaultState();
  795.        }
  796.    }
  797.  
  798.    handleSearch(query) {
  799.        if (query.trim() === '') {
  800.            this.showDefaultState();
  801.            return;
  802.        }
  803.  
  804.        const results = this.searchTools(query);
  805.        this.displayResults(results, query);
  806.        this.selectedIndex = -1;
  807.    }
  808.  
  809.    searchTools(query) {
  810.        const searchTerm = query.toLowerCase().trim();
  811.        return this.tools.filter(tool => {
  812.            return tool.name.toLowerCase().includes(searchTerm) ||
  813.                   tool.description.toLowerCase().includes(searchTerm) ||
  814.                   tool.keywords.some(keyword => keyword.includes(searchTerm)) ||
  815.                   tool.category.includes(searchTerm);
  816.        }).sort((a, b) => {
  817.            const aNameMatch = a.name.toLowerCase().includes(searchTerm);
  818.            const bNameMatch = b.name.toLowerCase().includes(searchTerm);
  819.            if (aNameMatch && !bNameMatch) return -1;
  820.            if (!aNameMatch && bNameMatch) return 1;
  821.            return a.name.localeCompare(b.name);
  822.        });
  823.    }
  824.  
  825.    displayResults(results, query) {
  826.        this.currentResults = results;
  827.  
  828.        if (results.length === 0) {
  829.            this.showNoResults();
  830.            return;
  831.        }
  832.  
  833.        if (this.searchResults) {
  834.            this.searchResults.classList.remove('hidden');
  835.        }
  836.        if (this.popularSearches) {
  837.            this.popularSearches.classList.add('hidden');
  838.        }
  839.        if (this.noResults) {
  840.            this.noResults.classList.add('hidden');
  841.        }
  842.  
  843.        if (this.resultsCount) {
  844.            this.resultsCount.textContent = results.length;
  845.        }
  846.  
  847.        if (this.searchResultsList) {
  848.            this.searchResultsList.innerHTML = results.map((tool, index) => `
  849.                <div class="search-result-item" data-index="${index}" data-url="${tool.url}">
  850.                    <div class="search-result-icon category-${tool.category}">
  851.                        ${this.getCategoryIcon(tool.category)}
  852.                    </div>
  853.                    <div class="flex-1">
  854.                        <div class="font-medium text-gray-900">${this.highlightMatch(tool.name, query)}</div>
  855.                        <p class="text-sm text-gray-700 mt-1">${tool.description}</p>
  856.                        <span class="inline-block mt-2 px-2 py-1 bg-gray-100 text-gray-700 text-xs rounded-full capitalize">${this.getCategoryLabel(tool.category)}</span>
  857.                    </div>
  858.                    <svg class="w-5 h-5 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  859.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
  860.                    </svg>
  861.                </div>
  862.            `).join('');
  863.  
  864.            // Add click handlers
  865.            this.searchResultsList.querySelectorAll('.search-result-item').forEach(item => {
  866.                item.addEventListener('click', () => {
  867.                    this.selectResult(item.dataset.url, query);
  868.                });
  869.            });
  870.        }
  871.    }
  872.  
  873.    getCategoryIcon(category) {
  874.        const icons = {
  875.            image: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"/></svg>',
  876.            audio: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"/></svg>',
  877.            video: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/></svg>',
  878.            time: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>'
  879.        };
  880.        return icons[category] || icons.image;
  881.    }
  882.  
  883.    getCategoryLabel(category) {
  884.        const labels = {
  885.            image: 'Image Tool',
  886.            audio: 'Audio Tool',
  887.            video: 'Video Tool',
  888.            time: 'Time Tool'
  889.        };
  890.        return labels[category] || 'Tool';
  891.    }
  892.  
  893.    highlightMatch(text, query) {
  894.        if (!query) return text;
  895.        const regex = new RegExp(`(${query})`, 'gi');
  896.        return text.replace(regex, '<span class="bg-yellow-200 font-semibold">$1</span>');
  897.    }
  898.  
  899.    handleKeydown(e) {
  900.        if (this.currentResults.length === 0) return;
  901.  
  902.        switch (e.key) {
  903.            case 'ArrowDown':
  904.                e.preventDefault();
  905.                this.selectedIndex = Math.min(this.selectedIndex + 1, this.currentResults.length - 1);
  906.                this.updateSelection();
  907.                break;
  908.            case 'ArrowUp':
  909.                e.preventDefault();
  910.                this.selectedIndex = Math.max(this.selectedIndex - 1, -1);
  911.                this.updateSelection();
  912.                break;
  913.            case 'Enter':
  914.                e.preventDefault();
  915.                if (this.selectedIndex >= 0) {
  916.                    this.selectResult(this.currentResults[this.selectedIndex].url, this.searchInput.value);
  917.                }
  918.                break;
  919.        }
  920.    }
  921.  
  922.    updateSelection() {
  923.        if (this.searchResultsList) {
  924.            this.searchResultsList.querySelectorAll('.search-result-item').forEach((item, index) => {
  925.                if (index === this.selectedIndex) {
  926.                    item.classList.add('selected');
  927.                    item.scrollIntoView({block: 'nearest'});
  928.                } else {
  929.                    item.classList.remove('selected');
  930.                }
  931.            });
  932.        }
  933.    }
  934.  
  935.    selectResult(url, query) {
  936.        window.location.href = url;
  937.        this.closeSearchOverlay();
  938.    }
  939.  
  940.    performSearch(searchTerm) {
  941.        if (this.searchInput) {
  942.            this.searchInput.value = searchTerm;
  943.            this.handleSearch(searchTerm);
  944.            this.searchInput.focus();
  945.        }
  946.    }
  947.  
  948.    showDefaultState() {
  949.        if (this.searchResults) {
  950.            this.searchResults.classList.add('hidden');
  951.        }
  952.        if (this.noResults) {
  953.            this.noResults.classList.add('hidden');
  954.        }
  955.        if (this.popularSearches) {
  956.            this.popularSearches.classList.remove('hidden');
  957.        }
  958.    }
  959.  
  960.    showNoResults() {
  961.        if (this.searchResults) {
  962.            this.searchResults.classList.add('hidden');
  963.        }
  964.        if (this.popularSearches) {
  965.            this.popularSearches.classList.add('hidden');
  966.        }
  967.        if (this.noResults) {
  968.            this.noResults.classList.remove('hidden');
  969.        }
  970.    }
  971.  
  972.    // Mobile Menu Methods
  973.    openMobileMenu() {
  974.        if (this.mobileMenu && this.mobileMenuOverlay) {
  975.            this.mobileMenu.classList.add('open');
  976.            this.mobileMenuOverlay.classList.remove('hidden');
  977.            document.body.style.overflow = 'hidden';
  978.        }
  979.    }
  980.  
  981.    closeMobileMenuOverlay() {
  982.        if (this.mobileMenu && this.mobileMenuOverlay) {
  983.            this.mobileMenu.classList.remove('open');
  984.            this.mobileMenuOverlay.classList.add('hidden');
  985.            document.body.style.overflow = 'auto';
  986.        }
  987.    }
  988. }
  989.  
  990. // Initialize when DOM is loaded
  991. document.addEventListener('DOMContentLoaded', function() {
  992.    new HeaderManager();
  993. });
  994. </script>
  995.  
  996.  
  997.  
  998. <div class="min-h-screen bg-white">
  999.    <div class="container mx-auto px-4 flex items-center justify-center min-h-screen">
  1000.        <div class="max-w-4xl mx-auto text-center">
  1001.  
  1002.            <!-- Google Logo Style Element (Optional) -->
  1003.            <div class="mb-12">
  1004.                <div class="inline-flex items-center space-x-1 text-6xl font-normal tracking-tight">
  1005.                    <span class="text-blue-500">4</span>
  1006.                    <span class="text-red-500">0</span>
  1007.                    <span class="text-yellow-500">4</span>
  1008.                </div>
  1009.            </div>
  1010.  
  1011.            <!-- Main Content -->
  1012.            <div class="mb-12">
  1013.                <h1 class="text-2xl text-gray-800 font-normal mb-4">
  1014.                    Page not found
  1015.                </h1>
  1016.  
  1017.                <p class="text-base text-gray-600 mb-8 max-w-md mx-auto leading-6">
  1018.                    The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.
  1019.                </p>
  1020.            </div>
  1021.  
  1022.            <!-- Action Buttons -->
  1023.            <div class="flex flex-col sm:flex-row gap-3 justify-center items-center mb-12">
  1024.                <!-- Return Home Button -->
  1025.                <a href="/"
  1026.                   class="inline-flex items-center px-6 py-2 bg-blue-600 text-white text-sm font-medium rounded hover:bg-blue-700 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
  1027.                    <svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1028.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
  1029.                    </svg>
  1030.                    Go to homepage
  1031.                </a>
  1032.  
  1033.                <!-- Go Back Button -->
  1034.                <button onclick="history.back()"
  1035.                        class="inline-flex items-center px-6 py-2 border border-gray-300 text-sm font-medium text-gray-700 bg-white rounded hover:bg-gray-50 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
  1036.                    <svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1037.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 17l-5-5m0 0l5-5m-5 5h12"></path>
  1038.                    </svg>
  1039.                    Go back
  1040.                </button>
  1041.            </div>
  1042.  
  1043.            <!-- Quick Links Section -->
  1044.            <div class="border-t border-gray-200 pt-8">
  1045.                <p class="text-sm text-gray-500 mb-6">You might want to try:</p>
  1046.  
  1047.                <div class="grid grid-cols-2 md:grid-cols-4 gap-4 max-w-md mx-auto">
  1048.                    <a href="/" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  1049.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  1050.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1051.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"></path>
  1052.                            </svg>
  1053.                        </div>
  1054.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">Home</p>
  1055.                    </a>
  1056.  
  1057.                    <a href="/about" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  1058.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  1059.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1060.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path>
  1061.                            </svg>
  1062.                        </div>
  1063.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">About</p>
  1064.                    </a>
  1065.  
  1066.                    <a href="/contact" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  1067.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  1068.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1069.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
  1070.                            </svg>
  1071.                        </div>
  1072.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">Contact</p>
  1073.                    </a>
  1074.  
  1075.                    <a href="/all-tools" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  1076.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  1077.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1078.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"></path>
  1079.                            </svg>
  1080.                        </div>
  1081.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">Tools</p>
  1082.                    </a>
  1083.                </div>
  1084.            </div>
  1085.  
  1086.            <!-- Footer Message -->
  1087.            <div class="mt-8">
  1088.                <p class="text-xs text-gray-400">
  1089.                    Error 404
  1090.                </p>
  1091.            </div>
  1092.        </div>
  1093.    </div>
  1094. </div>
  1095.  
  1096.  
  1097.  
  1098.  
  1099. <!-- templates/blog/related_posts_for_apps.html -->
  1100.  
  1101.  
  1102.  
  1103.  
  1104. <!-- Footer -->
  1105.    <footer class="bg-gray-900 text-white py-16">
  1106.        <div class="container mx-auto px-6">
  1107.            <div class="grid grid-cols-1 md:grid-cols-5 gap-8">
  1108.                <div>
  1109.                    <div class="text-lg font-semibold mb-4 text-blue-300">PDF & Document Tools</div>
  1110.                    <ul class="space-y-2">
  1111.                        <li><a href="/pdf-to-word" class="accessible-link-footer">PDF to Word Converter</a></li>
  1112.                        <li><a href="/word-to-pdf" class="accessible-link-footer">Word to PDF Converter</a></li>
  1113.                        <li><a href="/pdf-compressor" class="accessible-link-footer">PDF Compressor</a></li>
  1114.                        <li><a href="/document-converter" class="accessible-link-footer">Document Converter</a></li>
  1115.                        <li><a href="/pdf-converter" class="accessible-link-footer">PDF Converter</a></li>
  1116.                    </ul>
  1117.                </div>
  1118.  
  1119.                <div>
  1120.                    <div class="text-lg font-semibold mb-4 text-green-300">Image & Audio Tools</div>
  1121.                    <ul class="space-y-2">
  1122.                        <li><a href="/image-compressor" class="accessible-link-footer">Image Compressor</a></li>
  1123.                        <li><a href="/jpg-to-png" class="accessible-link-footer">JPG to PNG Converter</a></li>
  1124.                        <li><a href="/mp4-to-mp3" class="accessible-link-footer">MP4 to MP3 Converter</a></li>
  1125.                        <li><a href="/mp3-converter" class="accessible-link-footer">MP3 Converter</a></li>
  1126.                        <li><a href="/webp-converter" class="accessible-link-footer">WebP Converter</a></li>
  1127.                    </ul>
  1128.                </div>
  1129.  
  1130.                <div>
  1131.                    <div class="text-lg font-semibold mb-4 text-yellow-300">Time Zone Converters</div>
  1132.                    <ul class="space-y-2">
  1133.                        <li><a href="/convert-utc-to-ist-time" class="accessible-link-footer">UTC to India Time</a></li>
  1134.                        <li><a href="/convert-pst-to-jst-time" class="accessible-link-footer">PST to Japan Time</a></li>
  1135.                        <li><a href="/convert-edt-to-ist-time" class="accessible-link-footer">EDT to IST Time</a></li>
  1136.                        <li><a href="/convert-gmt-to-pkt-time" class="accessible-link-footer">GMT to Pakistan Time</a></li>
  1137.                        <li><a href="/time-converter" class="accessible-link-footer">World Clock</a></li>
  1138.                    </ul>
  1139.                </div>
  1140.  
  1141.                <div>
  1142.                    <div class="text-lg font-semibold mb-4 text-red-300">Unit Converters</div>
  1143.                    <ul class="space-y-2">
  1144.                        <li><a href="/meters-to-yards" class="accessible-link-footer">Meters to Yards</a></li>
  1145.                        <li><a href="/kg-to-lbs" class="accessible-link-footer">Kg to Lbs Converter</a></li>
  1146.                        <li><a href="/celsius-to-fahrenheit" class="accessible-link-footer">Celsius to Fahrenheit</a></li>
  1147.                        <li><a href="/feet-to-meters" class="accessible-link-footer">Feet to Meters</a></li>
  1148.                        <li><a href="/unit-converter" class="accessible-link-footer">All Unit Converters</a></li>
  1149.                    </ul>
  1150.                </div>
  1151.  
  1152.                <div>
  1153.                    <div class="text-lg font-semibold mb-4 text-purple-300">Company</div>
  1154.                    <ul class="space-y-2">
  1155.                        <li><a href="/about-us" class="accessible-link-footer">About Us</a></li>
  1156.                        <li><a href="/privacy-policy" class="accessible-link-footer">Privacy Policy</a></li>
  1157.                        <li><a href="/terms-and-conditions" class="accessible-link-footer">Terms of Service</a></li>
  1158.                        <li><a href="/contact" class="accessible-link-footer">Contact Support</a></li>
  1159.                        <li><a href="/blog" class="accessible-link-footer">Blog</a></li>
  1160.                    </ul>
  1161.                </div>
  1162.            </div>
  1163.  
  1164.            <!-- Footer Bottom Section -->
  1165.            <div class="mt-12 pt-8 border-t border-gray-700">
  1166.                <!-- Brand Section -->
  1167.                <div class="text-center mb-6">
  1168.                    <div class="flex flex-col sm:flex-row justify-center items-center space-y-2 sm:space-y-0 sm:space-x-3 mb-3">
  1169.                        <span class="text-2xl font-light text-blue-300">iFormat.io</span>
  1170.                        <span class="hidden sm:inline text-gray-400" aria-hidden="true">•</span>
  1171.                        <span class="text-gray-200 text-lg">Free Online File Converter</span>
  1172.                    </div>
  1173.                    <p class="text-gray-300 text-sm max-w-md mx-auto leading-relaxed">
  1174.                        Convert files online for free with enterprise-grade security and professional quality results.
  1175.                    </p>
  1176.                </div>
  1177.  
  1178.                <!-- Action Links & Credits -->
  1179.                <div class="flex flex-col md:flex-row justify-center items-center space-y-3 md:space-y-0 md:space-x-8 mb-6">
  1180.                    <!-- Support Link -->
  1181.                    <a href="/donate"
  1182.                       class="inline-flex items-center space-x-2 bg-gradient-to-r from-yellow-600 to-yellow-500 hover:from-yellow-700 hover:to-yellow-600 focus:from-yellow-700 focus:to-yellow-600 text-white px-4 py-2 rounded-lg transition-all duration-200 transform hover:scale-105 focus:scale-105 text-sm font-medium btn-focus"
  1183.                       style="text-decoration: none;">
  1184.                        <span aria-hidden="true">❤️</span>
  1185.                        <span>Support Our Mission</span>
  1186.                    </a>
  1187.  
  1188.                    <!-- SEO Credit -->
  1189.                    <div class="flex items-center space-x-2 text-sm">
  1190.                        <span class="text-gray-300">Powered by:</span>
  1191.                        <a href="https://daikimedia.com"
  1192.                           target="_blank"
  1193.                           rel="noopener noreferrer"
  1194.                           class="inline-flex items-center space-x-1 text-blue-300 hover:text-blue-200 focus:text-blue-200 transition-colors duration-200 font-medium underline underline-offset-2 hover:underline-offset-4 focus:underline-offset-4">
  1195.                            <span>Daiki Media</span>
  1196.                            <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true">
  1197.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"></path>
  1198.                            </svg>
  1199.                        </a>
  1200.                    </div>
  1201.                </div>
  1202.  
  1203.                <!-- Copyright -->
  1204.                <div class="text-center pt-4 border-t border-gray-800">
  1205.                    <p class="text-gray-300 text-sm">
  1206.                        © 2025 iFormat.io. All rights reserved.
  1207.                    </p>
  1208.                </div>
  1209.            </div>
  1210.        </div>
  1211.    </footer>
  1212. <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"057a7d89a84246c6b861ed977a629bc1","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
  1213. </body>
  1214. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda