PageSourceSearch

https://anyserv.eu/about/

html anyserv.eu collected 2026-10-02 01:01:10 UTC 113,511 bytes, 926 lines download raw bytes

1<!DOCTYPE html><html lang="en" data-lang="en"> <head><meta charset="UTF-8"><link rel="dns-prefetch" href="//acct.acceptrics.com"><link rel="dns-prefetch" href="//cdn.acceptrics.com">
1<script async src="https://acct.acceptrics.com/45c56c5"></script>
1<script>
2      (function () {
3        function readPurposes() {
4          try {
5            var raw = localStorage.getItem('__acceptrics_settings');
6            if (!raw) return null;
7            return JSON.parse(raw).purposes || null;
8          } catch (e) {
9            return null;
10          }
11        }
12        function purposePending(value) {
13          return value === 'unset' || value === undefined || value === null || value === '';
14        }
15        function consentStillPending() {
16          var p = readPurposes();
17          if (!p) return true;
18          return (
19            purposePending(p.ads) &&
20            purposePending(p.analytics) &&
21            purposePending(p.functional)
22          );
23        }
24        function syncGtagFromAcceptrics() {
25          var p = readPurposes();
26          if (!p || typeof window.gtag !== 'function') return;
27          function toGtag(value) {
28            if (value === 'accepted') return 'granted';
29            if (value === 'rejected') return 'denied';
30            return null;
31          }
32          var update = {};
33          var analytics = toGtag(p.analytics);
34          var ads = toGtag(p.ads);
35          if (analytics) update.analytics_storage = analytics;
36          if (ads) {
37            update.ad_storage = ads;
38            update.ad_user_data = ads;
39            update.ad_personalization = ads;
40          }
41          if (Object.keys(update).length) {
42            window.gtag('consent', 'update', update);
43          }
44        }
45        var bannerShowAttempts = 0;
46        var maxBannerShowAttempts = 3;
47        function showPendingBanner() {
48          if (!consentStillPending()) {
49            syncGtagFromAcceptrics();
50            return false;
51          }
52          if (bannerShowAttempts >= maxBannerShowAttempts) return false;
53          if (!document.body) return false;
54          bannerShowAttempts += 1;
55          try {
56            if (window.acceptrics && typeof window.acceptrics.showBanner === 'function') {
57              window.acceptrics.showBanner();
58              return true;
59            }
60          } catch (e) {
61            /* Acceptrics: showBanner() przed gotowym DOM modala → null.style */
62          }
63          return false;
64        }
65        function scheduleBannerRetry(delayMs) {
66          window.setTimeout(showPendingBanner, delayMs);
67        }
68        function onConsentSettled() {
69          syncGtagFromAcceptrics();
70        }
71        document.addEventListener('__acceptrics_loaded', function () {
72          scheduleBannerRetry(200);
73        });
74        document.addEventListener('__acceptrics_ini_complete', function () {
75          onConsentSettled();
76          if (consentStillPending()) scheduleBannerRetry(200);
77        });
78        document.addEventListener('DOMContentLoaded', function () {
79          if (consentStillPending()) scheduleBannerRetry(500);
80        });
81        window.addEventListener('load', function () {
82          onConsentSettled();
83          if (consentStillPending()) scheduleBannerRetry(900);
84        });
85        window.addEventListener('storage', function (e) {
86          if (e.key === '__acceptrics_settings') onConsentSettled();
87        });
88        [
89          '__acceptrics_consent_saved',
90          '__acceptrics_consent_update',
91          'acceptrics:consent-saved',
92          'acceptrics:consent-update',
93        ].forEach(function (eventName) {
94          document.addEventListener(eventName, onConsentSettled);
95        });
96      })();
97    </script>
vendor: 63 bytes, line 97
97<script async src="https://www.googletagmanager.com/gtag/js?id=
97G-NG233LKNKS
vendor: 11 bytes, line 97
97"></script>
97<script>
98            window.dataLayer = window.dataLayer || [];
99            function gtag() {
100              dataLayer.push(arguments);
101            }
102            if (!window.__anyservConsentDefaultSet) {
103              window.__anyservConsentDefaultSet = true;
104              gtag("consent", "default", {
105                ad_storage: "denied",
106                ad_user_data: "denied",
107                ad_personalization: "denied",
108                analytics_storage: "denied",
109                functionality_storage: "granted",
110                security_storage: "granted",
111                wait_for_update: 500,
112              });
113            }
114            gtag("js", new Date());
115            gtag("config", "G-NG233LKNKS");
116          </script>
116<!-- EXCEPTION: SRI not applicable - AdSense uses dynamic script URLs -->
116<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6446268738798088" crossorigin="anonymous" data-overlays="bottom"></script>
116<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><meta name="description" content="Learn about AnyServ, the free library of browser-based tools for finance, business, and health built with a privacy-first approach."><title>About AnyServ - Free Browser Tools for Everyone</title><!-- Favicon & install icons --><link rel="icon" type="image/png" href="/icons/favicon.png"><link rel="preload" href="/icons/logo.svg" as="image" type="image/svg+xml"><link rel="apple-touch-icon" sizes="800x800" href="/icons/anyserv-800x800.png"><link rel="manifest" href="/site.webmanifest"><!-- Theme inline script to prevent flash - defaults to dark -->
116<script>
117      (function () {
118        var _theme = "dark";
119        try {
120          _theme = localStorage.getItem("theme") || "dark";
121        } catch {}
122        document.documentElement.setAttribute("data-theme", _theme);
123      })();
124    </script>
124<meta property="og:type" content="website"><meta property="og:site_name" content="AnyServ"><meta property="og:title" content="About AnyServ - Free Browser Tools for Everyone"><meta property="og:description" content="Learn about AnyServ, the free library of browser-based tools for finance, business, and health built with a privacy-first approach."><meta property="og:image" content="https://anyserv.eu/og-default.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:url" content="https://anyserv.eu/about/"><meta property="og:locale" content="en_US"><meta property="og:locale:alternate" content="pl_PL"><meta property="og:locale:alternate" content="de_DE"><meta property="og:locale:alternate" content="fr_FR"><meta property="og:locale:alternate" content="es_ES"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@anyserv"><meta name="twitter:title" content="About AnyServ - Free Browser Tools for Everyone"><meta name="twitter:description" content="Learn about AnyServ, the free library of browser-based tools for finance, business, and health built with a privacy-first approach."><meta name="twitter:image" content="https://anyserv.eu/og-default.png"><!-- hreflang: kody regionalne (en-US) = sitemap xhtml:link; URL EN bez /en/ --><link rel="alternate" hreflang="en-US" href="https://anyserv.eu/about/"><link rel="alternate" hreflang="pl-PL" href="https://anyserv.eu/pl/about/"><link rel="alternate" hreflang="de-DE" href="https://anyserv.eu/de/about/"><link rel="alternate" hreflang="fr-FR" href="https://anyserv.eu/fr/about/"><link rel="alternate" hreflang="es-ES" href="https://anyserv.eu/es/about/"><link rel="alternate" hreflang="x-default" href="https://anyserv.eu/about/"><link rel="prefetch" href="/pl/about/" as="document"><link rel="prefetch" href="/de/about/" as="document"><link rel="prefetch" href="/fr/about/" as="document"><link rel="prefetch" href="/es/about/" as="document"><!-- canonical = aktualny język, bez parametrów query --><link rel="canonical" href="https://anyserv.eu/about/"><!-- llms.txt v2 (August 2026): https://llmstxt.org/ --><link rel="describedby" href="https://anyserv.eu/llms.txt"><link rel="stylesheet" href="/_astro/BaseLayout.DKREpYnM.css">
125<style>.document-wrapper[data-astro-cid-vdrf3zw3]{max-width:720px;margin:0 auto;padding:3rem 1.5rem;color:var(--color-text)}h1[data-astro-cid-vdrf3zw3]{font-size:clamp(2rem,4vw,2.75rem);font-weight:800;margin-bottom:.5rem;letter-spacing:-.03em}p[data-astro-cid-vdrf3zw3]{font-size:1rem;line-height:1.7;color:var(--color-text-muted);margin-bottom:1.25rem}.doc-link[data-astro-cid-vdrf3zw3]{color:#6366f1;text-decoration:none;font-weight:500}.doc-link[data-astro-cid-vdrf3zw3]:hover{text-decoration:underline}.about-kofi[data-astro-cid-vdrf3zw3]{margin-top:2.75rem;padding-top:2rem;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:center}[data-theme=light] .about-kofi[data-astro-cid-vdrf3zw3]{border-top-color:#0f172a1a}.about-kofi__link[data-astro-cid-vdrf3zw3]{display:inline-flex;border-radius:10px;transition:transform .2s ease,opacity .2s ease}.about-kofi__link[data-astro-cid-vdrf3zw3]:hover{transform:translateY(-2px);opacity:.92}.about-kofi__link[data-astro-cid-vdrf3zw3]:focus-visible{outline:2px solid #6366f1;outline-offset:4px}.about-kofi__badge[data-astro-cid-vdrf3zw3]{display:block;width:min(100%,320px);height:auto}.about-kofi__badge--on-light[data-astro-cid-vdrf3zw3],[data-theme=light] .about-kofi__badge--on-dark[data-astro-cid-vdrf3zw3]{display:none}[data-theme=light] .about-kofi__badge--on-light[data-astro-cid-vdrf3zw3]{display:block}
126</style></head> <body data-page>  <a href="#main" class="skip-link">Skip to content</a> <!-- Pasek postępu przy przełączaniu języka (DOM zamiast html::before – nie koliduje z overflow-x na html/body) --><div class="lang-nav-progress" aria-hidden="true"> <div class="lang-nav-progress__track"></div> <div class="lang-nav-progress__fill"></div> </div> <!-- Tło zza szuflady (tylko gdy otwarty panel mobile) --> <div class="navbar-backdrop" id="navbarBackdrop" aria-hidden="true"></div> <!-- Floating navbar wrapper --> <div class="navbar-wrapper"> <nav class="navbar" role="navigation" aria-label="Main navigation"> <!-- Warstwa tła: blur tylko tutaj - inaczej .navbar z backdrop-filter tworzy
127         nowy context i position:fixed szuflady trafia względem naw, nie ekranu --> <div class="navbar__glass" aria-hidden="true"></div> <!-- Logo --> <a href="/" class="navbar-logo" id="navbarLogoLink" aria-label="Home page" title="Go to home page"> <img src="/icons/logo.svg" alt="" id="navbarLogoImg" width="28" height="28" loading="eager" fetchpriority="high" decoding="async" class="navbar-logo-img"> <span class="navbar-wordmark">Any<span class="navbar-serv">Serv</span></span> </a> <!-- Right-side controls -->
127 <div class="navbar-controls"> <a href="/tools/" class="navbar-hub-link navbar-all-tools" id="navbarAllToolsLink">All tools</a> <a href="/apps/" class="navbar-hub-link navbar-all-extensions" id="navbarExtensionsLink">Extensions</a> <!-- Search --> <button id="search-trigger" class="navbar-search-btn" aria-label="Search tools"> <svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> <span class="search-label" id="navbarSearchLabel">Search...</span> </button> <!-- Mobile: wysuwa z prawej. Desktop: w jednej linii z wyszukiwarką --> <div class="navbar-extras" id="navbarExtras"> <div class="navbar-extras__header"> <p class="navbar-extras__title" id="navbarExtrasTitle">Language &amp; theme</p> <button type="button" class="navbar-extras__close" id="navDrawerClose" aria-label="Close menu"> <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" aria-hidden="true"> <path d="M18 6L6 18M6 6l12 12"></path> </svg> </button> </div> <a href="/apps/" class="navbar-drawer-link navbar-all-extensions" id="navbarExtensionsDrawerLink">Extensions</a> <!-- Language switcher - FIX 1: CSS class-driven, no hidden attr --> <div class="lang-switcher" id="langSwitcher"> <button class="lang-btn" id="langBtn" aria-haspopup="listbox" aria-expanded="false"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"> <circle cx="12" cy="12" r="10"></circle> <path d="M2 12h20M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path> </svg> <span id="langLabel">EN</span> <svg class="chevron" width="10" height="10" viewBox="0 0 10 10" fill="none" aria-hidden="true"> <path d="M2 3.5l3 3 3-3" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <div class="lang-panel" id="langPanel" role="listbox" aria-label="Select language"> <button class="lang-item" data-lang="en" data-label="EN" data-code="EN" role="option"> <span class="lang-flag">🇬🇧</span> <span class="lang-name">English</span> </button> <button class="lang-item" data-lang="pl" data-label="PL" data-code="PL" role="option"> <span class="lang-flag">🇵🇱</span> <span class="lang-name">Polski</span> </button> <button class="lang-item" data-lang="de" data-label="DE" data-code="DE" role="option"> <span class="lang-flag">🇩🇪</span> <span class="lang-name">Deutsch</span> </button> <button class="lang-item" data-lang="fr" data-label="FR" data-code="FR" role="option"> <span class="lang-flag">🇫🇷</span> <span class="lang-name">Français</span> </button> <button class="lang-item" data-lang="es" data-label="ES" data-code="ES" role="option"> <span class="lang-flag">🇪🇸</span> <span class="lang-name">Español</span> </button> </div> </div> <!-- Theme toggle --> <button type="button" id="theme-toggle" class="navbar-theme-btn" aria-label="Toggle theme"> <span class="theme-toggle__icons" aria-hidden="true"> <svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path> </svg> <svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </span> <span class="theme-toggle__label" id="themeToggleLabel">Light theme</span> <span class="theme-toggle__spacer" aria-hidden="true"></span> </button> </div> <button type="button" class="navbar-burger" id="navBurger" aria-label="Open menu" aria-controls="navbarExtras" aria-expanded="false"> <span class="navbar-burger__line" aria-hidden="true"></span> <span class="navbar-burger__line" aria-hidden="true"></span> <span class="navbar-burger__line" aria-hidden="true"></span> </button> </div> </nav> </div>  <dialog id="search-modal" class="search-modal-dialog" data-search-tools="{&#34;en&#34;:[{&#34;id&#34;:&#34;percentage-calculator&#34;,&#34;href&#34;:&#34;/tools/math/percentage-calculator/&#34;,&#34;title&#34;:&#34;Percentage Calculator&#34;,&#34;desc&#34;:&#34;X% of Y, share as a percent, and percent change-with formulas, examples, and FAQ in your browser.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📐&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;mortgage-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/mortgage-calculator/&#34;,&#34;title&#34;:&#34;Mortgage Calculator&#34;,&#34;desc&#34;:&#34;Estimate monthly mortgage payments, compare term and rate scenarios, and understand practical trade-offs before applying.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏠&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;apr-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/apr-calculator/&#34;,&#34;title&#34;:&#34;APR Calculator&#34;,&#34;desc&#34;:&#34;True annual cost of credit (EU RRSO / US APR): fees, commissions, grace peri
127ods and balloon payments.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💳&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;tax-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/vat-calculator/&#34;,&#34;title&#34;:&#34;Tax Calculator (VAT / GST)&#34;,&#34;desc&#34;:&#34;Universal tax calculator. Add or remove VAT, GST or Sales Tax. Automatic rates for all major countries.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🧾&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;salary-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/salary-calculator/&#34;,&#34;title&#34;:&#34;Salary Calculator 2026&#34;,&#34;desc&#34;:&#34;See 2026 take-home pay: gross to net, tax, social and health contributions, plus employer cost. Free in your browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💼&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;currency-converter&#34;,&#34;href&#34;:&#34;/tools/finance/currency-converter/&#34;,&#34;title&#34;:&#34;Currency Converter&#34;,&#34;desc&#34;:&#34;Live-style FX conversion for 30+ currencies with mid-market context for travel, transfers, and shopping.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💱&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;invoice-generator&#34;,&#34;href&#34;:&#34;/tools/finance/invoice-generator/&#34;,&#34;title&#34;:&#34;Invoice Generator&#34;,&#34;desc&#34;:&#34;Free PDF invoice in your browser: line items, VAT per row, discount, shipping, logo, bank notes. pdfmake, no signup.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📄&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;income-tax-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/income-tax-calculator/&#34;,&#34;title&#34;:&#34;Income Tax Calculator&#34;,&#34;desc&#34;:&#34;Estimate income tax from gross pay, allowance, and two-rate brackets. Net income and effective rate-runs locally in your browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏛️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;investment-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/investment-calculator/&#34;,&#34;title&#34;:&#34;Compound Interest Calculator&#34;,&#34;desc&#34;:&#34;Compound interest and ROI calculator for long-term investment planning.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📈&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;hosting-comparison&#34;,&#34;href&#34;:&#34;/tools/business/hosting-comparison/&#34;,&#34;title&#34;:&#34;Hosting Comparison&#34;,&#34;desc&#34;:&#34;Compare 50+ hosting plans for free. Filter by RAM, storage and price; intro vs renewal from curated research of public sources.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;🖥️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;employee-cost-calculator&#34;,&#34;href&#34;:&#34;/tools/business/employee-cost-calculator/&#34;,&#34;title&#34;:&#34;Employee Cost Calculator 2026&#34;,&#34;desc&#34;:&#34;See the full 2026 employer cost: gross pay, social contributions, payroll taxes and monthly perks. Free in your browser.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;👥&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;bmi-calculator&#34;,&#34;href&#34;:&#34;/tools/health/bmi-calculator/&#34;,&#34;title&#34;:&#34;BMI &#38; WHtR Calculator&#34;,&#34;desc&#34;:&#34;BMI and waist-to-height ratio with WHO categories, optional Asian thresholds, metric or imperial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;❤️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;calorie-calculator&#34;,&#34;href&#34;:&#34;/tools/health/calorie-calculator/&#34;,&#34;title&#34;:&#34;Calorie Calculator&#34;,&#34;desc&#34;:&#34;Mifflin-St Jeor BMR and TDEE with separate NEAT and training activity factors, gender-adjusted protein/fat targets per kg, fiber estimate, and lean-bulk safety tips. Metric or imperial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🔥&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;unit-converter&#34;,&#34;href&#34;:&#34;/tools/math/unit-converter/&#34;,&#34;title&#34;:&#34;Unit Converter&#34;,&#34;desc&#34;:&#34;Convert length, mass, volume, temperature, area and speed. Metric and US customary units, instant in y
127our browser.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📏&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;tip-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/tip-calculator/&#34;,&#34;title&#34;:&#34;Tip Calculator&#34;,&#34;desc&#34;:&#34;Calculate tip, tax, total and per-person split in seconds. Choose pre-tax or post-tax tip base and get instant results in your browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🤝&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;qr-code-generator&#34;,&#34;href&#34;:&#34;/tools/utilities/qr-code-generator/&#34;,&#34;title&#34;:&#34;QR Code Generator&#34;,&#34;desc&#34;:&#34;Generate custom QR codes for URLs, WiFi, vCard, email and text. Add logo, pick colors, choose dot styles. Free, no registration, works in your browser.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔳&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;password-generator&#34;,&#34;href&#34;:&#34;/tools/utilities/password-generator/&#34;,&#34;title&#34;:&#34;Password Generator&#34;,&#34;desc&#34;:&#34;Generate strong, memorable passwords from your own words. Adjustable strength, crack-time estimates, 100% in your browser.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;discount-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/discount-calculator/&#34;,&#34;title&#34;:&#34;Discount &#38; Sale Price Calculator&#34;,&#34;desc&#34;:&#34;Calculate sale price after a discount, find the discount percentage, or reverse-engineer the original price. Free, instant, in your browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏷️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;age-calculator&#34;,&#34;href&#34;:&#34;/tools/utilities/age-calculator/&#34;,&#34;title&#34;:&#34;Age &#38; Date Calculator&#34;,&#34;desc&#34;:&#34;Calculate exact age, the difference between two dates, or add and subtract days, weeks, months, and years. Free, instant, in your browser.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🎂&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;hash-generator&#34;,&#34;href&#34;:&#34;/tools/utilities/hash-generator/&#34;,&#34;title&#34;:&#34;Hash Generator&#34;,&#34;desc&#34;:&#34;Compute MD5, SHA-1, SHA-256, SHA-384, and SHA-512 from text or files.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;#️⃣&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;time-zone-converter&#34;,&#34;href&#34;:&#34;/tools/utilities/time-zone-converter/&#34;,&#34;title&#34;:&#34;Time Zone Converter&#34;,&#34;desc&#34;:&#34;Convert time across world time zones with DST-aware offsets. Compare UTC, Europe, America, Asia, and Pacific zones in one view.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🌐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;uuid-generator&#34;,&#34;href&#34;:&#34;/tools/utilities/uuid-generator/&#34;,&#34;title&#34;:&#34;UUID / GUID Generator&#34;,&#34;desc&#34;:&#34;Generate UUID v4, v1, and v7 online. Batch up to 100, copy or download as TXT.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🆔&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;base-converter&#34;,&#34;href&#34;:&#34;/tools/utilities/base-converter/&#34;,&#34;title&#34;:&#34;Binary / Hex / Dec / Oct Converter&#34;,&#34;desc&#34;:&#34;Convert numbers between decimal, binary, hexadecimal, and octal. Signed mode, digit grouping, instant sync.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔢&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;markup-margin-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/markup-margin-calculator/&#34;,&#34;title&#34;:&#34;Price Markup &#38; Margin Calculator&#34;,&#34;desc&#34;:&#34;Calculate markup, margin, and sale price. See the difference between markup on cost and margin on price.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📊&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;sales-commission-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/sales-commission-calculator/&#34;,&#34;title&#34;:&#34;Sales Commission Calculator&#34;,&#34;desc&#34;:&#34;Calculate sales commission: flat rate, tiered brackets, or team split. Free, instant, in your browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💰&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;meeting-cost-calculator&#34;,&#34;href&#34;:&#34;/tools/utilities/meeting-cost-calculator/&#34;,&#34;title&#34;:&#34;Meeting Cost Calculator&#34;,&#34;desc&#34;:&#34;See how much a meeting really costs: participants, duration, hourly rates, and a live cost clock. Free in your browser.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;⏱️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;running-pace-calculator&#34;,&#34;href&#34;:&#34;/tools/health/running-pace-calculator/&#34;,&#34;title&#34;:&#34;Running Pace &#38; Race Time Calculator&#34;,&#34;desc&#34;:&#34;Calculate running pace, finish time, or distance. Preset race distances, split table, km/mi toggle. Free in your browser.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🏃&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;loan-calculator&#34;,&#34;href&#34;:&#34;/tools/finance/loan-calculator/&#34;,&#34;title&#34;:&#34;Loan Calculator&#34;,&#34;desc&#34;:&#34;Calculate EMI, compare up to three loan offers, check affordability from income, analyze refinance costs, and model prepayment with Smart Summary, charts, and amortization table.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏦&#34;,&#34;tags&#34;:[&#34;new&#34;]}],&#34;pl&#34;:[{&#34;id&#34;:&#34;percentage-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/math/percentage-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator procentowy&#34;,&#34;desc&#34;:&#34;X% z Y, udzial jako procent i zmiana procentowa - ze wzorami, przykladami i FAQ w przegladarce.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📐&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;mortgage-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/mortgage-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator hipoteczny&#34;,&#34;desc&#34;:&#34;Oszacuj miesięczną ratę kredytu hipotecznego, porównaj warianty okresu i stóp oraz poznaj typowe kompromisy przed wizytą w banku.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏠&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;apr-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/apr-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator RRSO&#34;,&#34;desc&#34;:&#34;
127Rzeczywisty roczny koszt kredytu (RRSO UE / APR USA): opłaty, prowizje, karencja i rata balonowa.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💳&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;tax-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/vat-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator VAT&#34;,&#34;desc&#34;:&#34;Uniwersalny kalkulator podatkowy: dodaj lub wylicz VAT, GST albo podatek od sprzedaży (Sales Tax). Orientacyjne stawki dla głównych krajów.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🧾&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;salary-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/salary-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator wynagrodzeń 2026&#34;,&#34;desc&#34;:&#34;Wypłata na rękę za 2026: brutto na netto, podatek, ZUS, składka zdrowotna i koszt pracodawcy. Od razu w przeglądarce.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💼&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;currency-converter&#34;,&#34;href&#34;:&#34;/pl/tools/finance/currency-converter/&#34;,&#34;title&#34;:&#34;Kalkulator walutowy (przelicznik walut)&#34;,&#34;desc&#34;:&#34;Przeliczanie ponad 30 walut z kontekstem mid-market na podróże, przelewy i zakupy.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💱&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;invoice-generator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/invoice-generator/&#34;,&#34;title&#34;:&#34;Generator faktur&#34;,&#34;desc&#34;:&#34;Darmowa faktura PDF w przeglądarce: pozycje, VAT w wierszu, rabat, wysyłka, logo, uwagi bankowe. pdfmake, bez konta.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📄&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;income-tax-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/income-tax-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator PIT&#34;,&#34;desc&#34;:&#34;Szacuj PIT od brutto, kwoty wolnej i dwóch progów. Netto i stawka skuteczna - obliczenia lokalnie w przeglądarce.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏛️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;investment-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/investment-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator inwestycji&#34;,&#34;desc&#34;:&#34;Procent składany i ROI: projekcja kapitału na lata z wpłatami, inflacją i opłatami.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📈&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;hosting-comparison&#34;,&#34;href&#34;:&#34;/pl/tools/business/hosting-comparison/&#34;,&#34;title&#34;:&#34;Porównanie hostingu&#34;,&#34;desc&#34;:&#34;Porównaj ponad 50 planów hostingu za darmo. Filtruj po RAM, dysku i cenie; cena wstępna vs odnowienie na podstawie publicznych źródeł.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;🖥️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;employee-cost-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/business/employee-cost-calculator/&#34;,&#34;title&#34;:&#34;
127Kalkulator kosztów pracodawcy 2026&#34;,&#34;desc&#34;:&#34;Policz całkowity koszt etatu w 2026: brutto, składki pracodawcy, podatki i benefity. Wynik od razu, za darmo w przeglądarce.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;👥&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;bmi-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/health/bmi-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator BMI i WHtR&#34;,&#34;desc&#34;:&#34;BMI i stosunek talia do wzrostu (WHtR) z kategoriami WHO, opcjonalnymi progami azjatyckimi, metrycznie lub imperialnie.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;❤️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;calorie-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/health/calorie-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator Kalorii&#34;,&#34;desc&#34;:&#34;BMR i TDEE (Mifflin-St Jeor) z osobnymi współczynnikami NEAT i treningu, cele makroskładników per kg masy ciała z uwzględnieniem płci, szacowanie błonnika i wskazówki bezpieczeństwa. Metryczny lub imperialny.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🔥&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;unit-converter&#34;,&#34;href&#34;:&#34;/pl/tools/math/unit-converter/&#34;,&#34;title&#34;:&#34;Przelicznik jednostek&#34;,&#34;desc&#34;:&#34;Przelicz długość, masę, objętość, temperaturę, powierzchnię i prędkość. Metryczne i US, od razu w przeglądarce.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📏&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;tip-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/tip-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator napiwku&#34;,&#34;desc&#34;:&#34;Oblicz napiwek, podatek, sumę i podział na osoby. Wybierz bazę przed lub po podatku - wynik od razu w przeglądarce.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🤝&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;qr-code-generator&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/qr-code-generator/&#34;,&#34;title&#34;:&#34;Generator kodów QR&#34;,&#34;desc&#34;:&#34;Twórz kody QR dla linków, WiFi, wizytówek, e-mail i tekstu. Logo, kolory i style kropek. Za darmo, w przeglądarce, bez rejestracji.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔳&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;password-generator&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/password-generator/&#34;,&#34;title&#34;:&#34;Generator haseł&#34;,&#34;desc&#34;:&#34;Twórz silne, zapamiętywalne hasła z własnych słów. Regulowana siła, szacowany czas łamania, 100% w przeglądarce.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;discount-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/discount-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator rabatu&#34;,&#34;desc&#34;:&#34;Oblicz cenę po rabacie, sprawdź procent zniżki lub wylicz cenę oryginalną. Za darmo, od razu, w przeglądarce.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏷️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;age-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/age-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator wieku&#34;,&#34;desc&#34;:&#34;Oblicz dokładny wiek, różnicę między datami lub dodaj i odejmij dni, tygodnie, miesiące i lata. Za darmo, od razu, w przeglądarce.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🎂&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;hash-generator&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/hash-generator/&#34;,&#34;title&#34;:&#34;Generator hash&#34;,&#34;desc&#34;:&#34;Oblicz MD5, SHA-1, SHA-256, SHA-384 i SHA-512 z tekstu lub pliku.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;#️⃣&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;time-zone-converter&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/time-zone-converter/&#34;,&#34;title&#34;:&#34;Kalkulator stref czasowych&#34;,&#34;desc&#34;:&#34;Przeliczaj czas między strefami czasowymi z uwzględnieniem DST. Porównuj UTC, Europę, Amerykę, Azję i Pacyfik w jednym widoku.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🌐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;uuid-generator&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/uuid-generator/&#34;,&#34;title&#34;:&#34;Generator UUID / GUID&#34;,&#34;desc&#34;:&#34;Generuj UUID v4, v1 i v7 online. Batch do 100 sztuk, kopiuj lub pobierz jako TXT.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🆔&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;base-converter&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/base-converter/&#34;,&#34;title&#34;:&#34;Konwerter systemów liczbowych&#34;,&#34;desc&#34;:&#34;Przelicz liczby między dziesiętnym, binarnym, szesnastkowym i ósemkowym. Tryb signed, grupowanie, sync na żywo.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔢&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;markup-margin-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/markup-margin-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator marży i narzutu&#34;,&#34;desc&#34;:&#34;Oblicz marżę, narzut (markup) i cenę sprzedaży. Poznaj różnicę między narzutem od kosztu a marżą od ceny.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📊&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;sales-commission-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/sales-commission-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator prowizji&#34;,&#34;desc&#34;:&#34;Oblicz prowizję od sprzedaży: prosta stawka, progi prowizyjne, podział w zespole. Za darmo, w przeglądarce.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💰&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;meeting-cost-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/utilities/meeting-cost-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator kosztu spotkania&#34;,&#34;desc&#34;:&#34;Sprawdź, ile naprawdę kosztuje spotkanie: uczestnicy, czas, stawki godzinowe i zegar kosztów na żywo. Za darmo w przeglądarce.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;⏱️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;running-pace-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/health/running-pace-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator tempa biegu&#34;,&#34;desc&#34;:&#34;Oblicz tempo biegu, czas ukończenia lub dystans. Presety tras, tabela podziału, przełącznik km/mi. Za darmo w przeglądarce.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🏃&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;loan-calculator&#34;,&#34;href&#34;:&#34;/pl/tools/finance/loan-calculator/&#34;,&#34;title&#34;:&#34;Kalkulator kredytu&#34;,&#34;desc&#34;:&#34;Oblicz ratę, porównaj do trzech ofert, sprawdź zdolność z dochodu, przeanalizuj restrukturyzację i nadpłaty z inteligentnym podsumowaniem, wykresami i harmonogramem.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏦&#34;,&#34;tags&#34;:[&#34;new&#34;]}],&#34;de&#34;:[{&#34;id&#34;:&#34;percentage-calculator&#34;,&#34;href&#34;:&#34;/de/tools/math/percentage-calculator/&#34;,&#34;title&#34;:&#34;Prozent-Rechner&#34;,&#34;desc&#34;:&#34;X % von Y, Anteil als Prozent und prozentuale Anderung - mit Formeln, Beispielen und FAQ im Browser.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📐&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;mortgage-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/mortgage-calculator/&#34;,&#34;title&#34;:&#34;Hypothekenrechner&#34;,&#34;desc&#34;:&#34;Schätzen Sie die monatliche Hypothekenrate, vergleichen Sie Laufzeit- und Zinsszenarien und verstehe
127n Sie typische Abwägungen vor der Beantragung.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏠&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;apr-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/apr-calculator/&#34;,&#34;title&#34;:&#34;Effektivzinsrechner&#34;,&#34;desc&#34;:&#34;Jährliche Gesamtkreditkosten (EU-Effektivzins vs. US-APR): Gebühren, Provisionen, Karenz und Ballonrate.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💳&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;tax-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/vat-calculator/&#34;,&#34;title&#34;:&#34;MwSt-Rechner&#34;,&#34;desc&#34;:&#34;Universeller Steuerrechner: MwSt., GST oder Sales Tax hinzufügen oder abziehen. Orientierende Sätze für die wichtigsten Länder.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🧾&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;salary-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/salary-calculator/&#34;,&#34;title&#34;:&#34;Gehaltsrechner 2026&#34;,&#34;desc&#34;:&#34;Nettogehalt 2026: Brutto zu Netto, Steuer, Sozialabgaben und Arbeitgeberkosten. Sofort im Browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💼&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;currency-converter&#34;,&#34;href&#34;:&#34;/de/tools/finance/currency-converter/&#34;,&#34;title&#34;:&#34;Währungsrechner&#34;,&#34;desc&#34;:&#34;Umrechnung für über 30 Währungen mit Mittelkurs-Kontext für Reisen, Überweisungen und Einkäufe.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💱&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;invoice-generator&#34;,&#34;href&#34;:&#34;/de/tools/finance/invoice-generator/&#34;,&#34;title&#34;:&#34;Rechnungsgenerator&#34;,&#34;desc&#34;:&#34;Kostenlose PDF-Rechnung im Browser: Positionen, MwSt. pro Zeile, Rabatt, Versand, Logo, Bankhinweise. pdfmake, ohne Anmeldung.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📄&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;income-tax-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/income-tax-calculator/&#34;,&#34;title&#34;:&#34;Einkommensteuer-Rechner&#34;,&#34;desc&#34;:&#34;Steuer schätzen aus Brutto, Freibetrag und zwei Steuersätzen. Netto und Effektivsatz - lokal im Browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏛️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;investment-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/investment-calculator/&#34;,&#34;title&#34;:&#34;Zinseszinsrechner&#34;,&#34;desc&#34;:&#34;Zinseszins und Rendite: langfristige Projektion mit Einzahlungen, Inflation und Gebühren.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📈&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;hosting-comparison&#34;,&#34;href&#34;:&#34;/de/tools/business/hosting-comparison/&#34;,&#34;title&#34;:&#34;Hosting-Vergleich&#34;,&#34;desc&#34;:&#34;Über 50 Hosting-Tarife kostenlos vergleichen. Nach RAM, Speicher und Preis filtern; Einführungs- vs. Verlängerungspreis aus öffentlichen Quellen.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;🖥️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;employee-cost-calculator&#34;,&#34;href&#34;:&#34;/de/tools/business/employee-cost-calculator/&#34;,&#34;title&#34;:&#34;Arbeitgeberkosten-Rechner&#34;,&#34;desc&#34;:&#34;Gesamtkosten des Arbeitgebers: Sozialabgaben, Lohnnebenkosten und fixe monatliche Benefits – übersichtlich im Browser.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;👥&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;bmi-calculator&#34;,&#34;href&#34;:&#34;/de/tools/health/bmi-calculator/&#34;,&#34;title&#34;:&#34;BMI- und WHtR-Rechner&#34;,&#34;desc&#34;:&#34;BMI und Taillen-zu-Größe-Verhältnis mit WHO-Kategorien, optionalen asiatischen Schwellen, metrisch oder imperial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;❤️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;calorie-calculator&#34;,&#34;href&#34;:&#34;/de/tools/health/calorie-calculator/&#34;,&#34;title&#34;:&#34;Kalorienrechner&#34;,&#34;desc&#34;:&#34;Mifflin-St Jeor BMR und TDEE mit getrennten NEAT- und Trainingsfaktoren, geschlechtsspezifische Protein- und Fettziele pro kg, Ballaststoff-Schätzung und Lean-Bulk-Hinweise. Metrisch oder imperial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🔥&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;unit-converter&#34;,&#34;href&#34;:&#34;/de/tools/math/unit-converter/&#34;,&#34;title&#34;:&#34;Einheiten-Umrechner&#34;,&#34;desc&#34;:&#34;Länge, Masse, Volumen, Temperatur, Fläche und Geschwindigkeit umrechnen. Metrisch und US, sofort im Browser.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📏&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;tip-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/tip-calculator/&#34;,&#34;title&#34;:&#34;Trinkgeldrechner&#34;,&#34;desc&#34;:&#34;Trinkgeld, Steuer, Gesamtsumme und Betrag pro Person berechnen. Wahlweise auf Basis vor oder nach Steuer - sofort im Browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🤝&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;qr-code-generator&#34;,&#34;href&#34;:&#34;/de/tools/utilities/qr-code-generator/&#34;,&#34;title&#34;:&#34;QR-Code-Generator&#34;,&#34;desc&#34;:&#34;QR-Codes für URLs, WLAN, vCard, E-Mail und Text. Logo, Farben und Punktstile. Kostenlos im Browser, ohne Anmeldung.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔳&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;password-generator&#34;,&#34;href&#34;:&#34;/de/tools/utilities/password-generator/&#34;,&#34;title&#34;:&#34;Passwort-Generator&#34;,&#34;desc&#34;:&#34;Starke, merkbare Passwörter aus eigenen Wörtern. Einstellbare Stärke, Crack-Zeit-Schätzung, 100 % im Browser.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;discount-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/discount-calculator/&#34;,&#34;title&#34;:&#34;Rabatt- &#38; Aktionspreis-Rechner&#34;,&#34;desc&#34;:&#34;Endpreis nach Rabatt berechnen, Rabattprozent ermitteln oder Originalpreis zurückrechnen. Kostenlos im Browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏷️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;age-calculator&#34;,&#34;href&#34;:&#34;/de/tools/utilities/age-calculator/&#34;,&#34;title&#34;:&#34;Altersrechner&#34;,&#34;desc&#34;:&#34;Exaktes Alter, Datumsdifferenz oder Datum plus/minus Zeiträume berechnen. Kostenlos im Browser.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🎂&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;hash-generator&#34;,&#34;href&#34;:&#34;/de/tools/utilities/hash-generator/&#34;,&#34;title&#34;:&#34;Hash-Generator&#34;,&#34;desc&#34;:&#34;MD5, SHA-1, SHA-256, SHA-384 und SHA-512 aus Text oder Dateien.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;#️⃣&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;time-zone-converter&#34;,&#34;href&#34;:&#34;/de/tools/utilities/time-zone-converter/&#34;,&#34;title&#34;:&#34;Zeitzonenrechner&#34;,&#34;desc&#34;:&#34;Zeiten zwischen globalen Zeitzonen mit DST-korrekten Offsets umrechnen und in einer Ansicht vergleichen.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🌐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;uuid-generator&#34;,&#34;href&#34;:&#34;/de/tools/utilities/uuid-generator/&#34;,&#34;title&#34;:&#34;UUID / GUID Generator&#34;,&#34;desc&#34;:&#34;UUID v4, v1 und v7 online generieren. Batch bis 100, kopieren oder als TXT laden.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🆔&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;base-converter&#34;,&#34;href&#34;:&#34;/de/tools/utilities/base-converter/&#34;,&#34;title&#34;:&#34;Zahlensystem-Umrechner&#34;,&#34;desc&#34;:&#34;Zahlen zwischen Dezimal, Binär, Hexadezimal und Oktal umrechnen. Signed-Modus, Gruppierung, sofortige Sync.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔢&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;markup-margin-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/markup-margin-calculator/&#34;,&#34;title&#34;:&#34;Aufschlag- &#38; Margen-Rechner&#34;,&#34;desc&#34;:&#34;Aufschlag, Marge und Verkaufspreis berechnen. Unterschied zwischen Aufschlag auf Kosten und Marge auf Preis.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📊&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;sales-commission-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/sales-commission-calculator/&#34;,&#34;title&#34;:&#34;
127Verkaufsprovision-Rechner&#34;,&#34;desc&#34;:&#34;Provision berechnen: einfacher Satz, gestaffelte Stufen oder Team-Aufteilung. Kostenlos im Browser.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💰&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;meeting-cost-calculator&#34;,&#34;href&#34;:&#34;/de/tools/utilities/meeting-cost-calculator/&#34;,&#34;title&#34;:&#34;Meeting-Kosten-Rechner&#34;,&#34;desc&#34;:&#34;Berechnen Sie Meeting-Kosten: Teilnehmer, Dauer, Stundensätze und Live-Kostenuhr. Kostenlos im Browser.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;⏱️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;running-pace-calculator&#34;,&#34;href&#34;:&#34;/de/tools/health/running-pace-calculator/&#34;,&#34;title&#34;:&#34;Lauftempo &#38; Renndauer Rechner&#34;,&#34;desc&#34;:&#34;Lauftempo, Zielzeit oder Distanz berechnen. Preset-Strecken, Split-Tabelle, km/mi-Umschalter. Kostenlos im Browser.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🏃&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;loan-calculator&#34;,&#34;href&#34;:&#34;/de/tools/finance/loan-calculator/&#34;,&#34;title&#34;:&#34;Kreditrechner&#34;,&#34;desc&#34;:&#34;Berechnen Sie EMI, vergleichen Sie bis zu drei Angebote, prüfen Sie die Leistbarkeit aus dem Einkommen, analysieren Sie Umschuldungskosten und modellieren Sie Sondertilgungen mit intelligenter Zusammenfassung, Charts und Tilgungsplan.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏦&#34;,&#34;tags&#34;:[&#34;new&#34;]}],&#34;fr&#34;:[{&#34;id&#34;:&#34;percentage-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/math/percentage-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de pourcentages&#34;,&#34;desc&#34;:&#34;X % de Y, part en pourcentage et variation en pourcentage - avec formules, exemples et FAQ dans le navigateur.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📐&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;mortgage-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/mortgage-calculator/&#34;,&#34;title&#34;:&#34;Simulateur de prêt immobilier&#34;,&#34;desc&#34;:&#34;Estimez vos mensualités, comparez durées et taux et comprenez les arbitrages pratiques avant de vous engager auprès d’un prêteur.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏠&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;apr-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/apr-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de TAEG&#34;,&#34;desc&#34;:&#34;Coût annuel réel du crédit (RRSO UE / APR US) : frais, commissions, différé et échéance ballon.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💳&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;tax-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/vat-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de TVA&#34;,&#34;desc&#34;:&#34;Calculateur fiscal universel : ajouter ou retirer la TVA, la GST ou la taxe de vente. Taux indicatifs pour les principaux pays.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🧾&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;salary-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/salary-calculator/&#34;,&#34;title&#34;:&#34;Simulateur de salaire 2026&#34;,&#34;desc&#34;:&#34;Net à payer en 2026 : du brut au net, impôt, cotisations et coût employeur. Gratuit dans le navigateur.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💼&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;currency-converter&#34;,&#34;href&#34;:&#34;/fr/tools/finance/currency-converter/&#34;,&#34;title&#34;:&#34;Convertisseur de devises&#34;,&#34;desc&#34;:&#34;Conversion de plus de 30 devises avec contexte mid-market pour voyages, virements et achats.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💱&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;invoice-generator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/invoice-generator/&#34;,&#34;title&#34;:&#34;Générateur de factures&#34;,&#34;desc&#34;:&#34;Facture PDF gratuite dans le navigateur : lignes, TVA par ligne, remise, livraison, logo, notes bancaires. pdfmake, sans compte.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📄&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;income-tax-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/income-tax-calculator/&#34;,&#34;title&#34;:&#34;Simulateur d'impôt sur le revenu&#34;,&#34;desc&#34;:&#34;Estimez l'impôt à partir du brut, d'un abattement et de deux tranches. Net et taux effectif - calculs locaux dans le navigateur.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏛️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;investment-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/investment-calculator/&#34;,&#34;title&#34;:&#34;Simulateur d'investissement&#34;,&#34;desc&#34;:&#34;Intérêts composés et ROI : projection sur plusieurs années avec versements, inflation et frais.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📈&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;hosting-comparison&#34;,&#34;href&#34;:&#34;/fr/tools/business/hosting-comparison/&#34;,&#34;title&#34;:&#34;Comparateur d’hébergement&#34;,&#34;desc&#34;:&#34;Comparez plus de 50 offres d’hébergement gratuitement. Filtrez par RAM, stockage et prix ; tarif d’accueil vs renouvellement à partir de sources publiques.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;🖥️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;employee-cost-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/business/employee-cost-calculator/&#34;,&#34;title&#34;:&#34;Calculateur du coût employeur&#34;,&#34;desc&#34;:&#34;Vue d’ensemble du coût total employeur : charges sociales, taxes de paie et avantages fixes mensuels.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;👥&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;bmi-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/health/bmi-calculator/&#34;,&#34;title&#34;:&#34;Calculateur IMC et WHtR&#34;,&#34;desc&#34;:&#34;IMC et rapport taille-hauteur avec catégories OMS, seuils asiatiques optionnels, métrique ou impérial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;❤️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;calorie-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/health/calorie-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de calories&#34;,&#34;desc&#34;:&#34;BMR et TDEE (Mifflin-St Jeor) avec NEAT et entraînement séparés, objectifs protéines et lipides par kg selon le sexe, estimation des fibres et conseils de prise maigre. Métrique ou impérial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🔥&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;unit-converter&#34;,&#34;href&#34;:&#34;/fr/tools/math/unit-converter/&#34;,&#34;title&#34;:&#34;Convertisseur d’unités&#34;,&#34;desc&#34;:&#34;Convertissez longueur, masse, volume, température, surface et vitesse. Métrique et US, instantanément dans le navigateur.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📏&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;tip-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/tip-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de pourboire&#34;,&#34;desc&#34;:&#34;Calculez pourboire, taxe, total et part par personne. Base avant ou après taxe - résultat instantané dans le navigateur.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🤝&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;qr-code-generator&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/qr-code-generator/&#34;,&#34;title&#34;:&#34;Générateur de QR code&#34;,&#34;desc&#34;:&#34;Créez des QR codes pour URL, WiFi, vCard, e-mail et texte. Logo, couleurs et styles. Gratuit dans le navigateur.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔳&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;password-generator&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/password-generator/&#34;,&#34;title&#34;:&#34;Générateur de mot de passe&#34;,&#34;desc&#34;:&#34;Créez des mots de passe forts et mémorables à partir de vos mots. Force réglable, estimation du temps de crack, 100 % local.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;discount-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/discount-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de remise et prix soldé&#34;,&#34;desc&#34;:&#34;Calculez le prix soldé, le pourcentage de remise ou le prix d'origine. Gratuit, instantané, dans le navigateur.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏷️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;age-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/age-calculator/&#34;,&#34;title&#34;:&#34;Calculateur d'âge et de dates&#34;,&#34;desc&#34;:&#34;Calculez l'âge exact, l'écart entre deux dates ou ajoutez/soustraiez des périodes. Gratuit dans le navigateur.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🎂&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;hash-generator&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/hash-generator/&#34;,&#34;title&#34;:&#34;Générateur de hash&#34;,&#34;desc&#34;:&#34;MD5, SHA-1, SHA-256, SHA-384 et SHA-512 depuis texte ou fichiers.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;#️⃣&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;time-zone-converter&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/time-zone-converter/&#34;,&#34;title&#34;:&#34;Convertisseur de fuseaux horaires&#34;,&#34;desc&#34;:&#34;Convertissez l heure entre fuseaux avec offsets DST exacts et comparez plusieurs zone
127s dans une vue unique.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🌐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;uuid-generator&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/uuid-generator/&#34;,&#34;title&#34;:&#34;Générateur UUID / GUID&#34;,&#34;desc&#34;:&#34;Générez des UUID v4, v1 et v7 en ligne. Lot jusqu'à 100, copie ou TXT.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🆔&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;base-converter&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/base-converter/&#34;,&#34;title&#34;:&#34;Convertisseur de bases&#34;,&#34;desc&#34;:&#34;Convertissez entre décimal, binaire, hexadécimal et octal. Mode signé, regroupement, sync instantanée.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔢&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;markup-margin-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/markup-margin-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de marge&#34;,&#34;desc&#34;:&#34;Calculez markup, marge et prix de vente. Différence entre markup sur coût et marge sur prix.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📊&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;sales-commission-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/sales-commission-calculator/&#34;,&#34;title&#34;:&#34;Calculateur commission ventes&#34;,&#34;desc&#34;:&#34;Calculez la commission: taux fixe, paliers ou répartition équipe. Gratuit dans le navigateur.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💰&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;meeting-cost-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/utilities/meeting-cost-calculator/&#34;,&#34;title&#34;:&#34;Calculateur coût réunion&#34;,&#34;desc&#34;:&#34;Calculez le coût réel d'une réunion: participants, durée, taux horaires et horloge live. Gratuit dans le navigateur.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;⏱️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;running-pace-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/health/running-pace-calculator/&#34;,&#34;title&#34;:&#34;Calculateur allure &#38; temps course&#34;,&#34;desc&#34;:&#34;Calculez allure, temps final ou distance. Presets, tableau splits, bascule km/mi. Gratuit dans le navigateur.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🏃&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;loan-calculator&#34;,&#34;href&#34;:&#34;/fr/tools/finance/loan-calculator/&#34;,&#34;title&#34;:&#34;Calculateur de mensualités&#34;,&#34;desc&#34;:&#34;Calculez la mensualité, comparez jusqu’à trois offres, vérifiez l’accessibilité à partir du revenu, analysez le refinancement et les remboursements anticipés avec résumé intelligent, graphiques et tableau d’amortissement.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏦&#34;,&#34;tags&#34;:[&#34;new&#34;]}],&#34;es&#34;:[{&#34;id&#34;:&#34;percentage-calculator&#34;,&#34;href&#34;:&#34;/es/tools/math/percentage-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de porcentajes&#34;,&#34;desc&#34;:&#34;X % de Y, proporcion como porcentaje y cambio porcentual, con formulas, ejemplos y FAQ en el navegador.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📐&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;mortgage-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/mortgage-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de hipoteca&#34;,&#34;desc&#34;:&#34;Calcula la cuota mensual, compara escenarios de plazo y tipo y entiende los compromisos prácticos antes de solicitar financiación.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏠&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;apr-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/apr-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de TAE&#34;,&#34;desc&#34;:&#34;Coste anual real del crédito (RRSO UE / APR EE. UU.): comisiones, carencia y cuota balón.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💳&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;tax-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/vat-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de IVA&#34;,&#34;desc&#34;:&#34;Calculadora fiscal universal: añade o extrae IVA, GST o impuesto sobre las ventas. Tasas orientativas para los principales países.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🧾&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;salary-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/salary-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de salario 2026&#34;,&#34;desc&#34;:&#34;Sueldo en mano en 2026: de bruto a neto, impuesto, cotizaciones y coste del empleador. Gratis en el navegador.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💼&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;currency-converter&#34;,&#34;href&#34;:&#34;/es/tools/finance/currency-converter/&#34;,&#34;title&#34;:&#34;Conversor de divisas&#34;,&#34;desc&#34;:&#34;Conversión de más de 30 divisas con contexto mid-market para viajes, transferencias y compras.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💱&#34;,&#34;tags&#34;:[&#34;hot&#34;]},{&#34;id&#34;:&#34;invoice-generator&#34;,&#34;href&#34;:&#34;/es/tools/finance/invoice-generator/&#34;,&#34;title&#34;:&#34;Generador de facturas&#34;,&#34;desc&#34;:&#34;Factura PDF gratis en el navegador: líneas, IVA por fila, descuento, envío, logo, notas bancarias. pdfmake, sin registro.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📄&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;income-tax-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/income-tax-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de IRPF&#34;,&#34;desc&#34;:&#34;Estima el impuesto desde el bruto, exención y dos tramos. Neto y tipo efectivo - todo en tu navegador.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏛️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;investment-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/investment-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de inversión&#34;,&#34;desc&#34;:&#34;Interés compuesto y ROI: proyección a largo plazo con aportes, inflación y comisiones.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📈&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;hosting-comparison&#34;,&#34;href&#34;:&#34;/es/tools/business/hosting-comparison/&#34;,&#34;title&#34;:&#34;Comparador de hosting&#34;,&#34;desc&#34;:&#34;Compara más de 50 planes de hosting gratis. Filtra por RAM, almacenamiento y precio; precio inicial vs renovación a partir de fuentes públicas.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;🖥️&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;employee-cost-calculator&#34;,&#34;href&#34;:&#34;/es/tools/business/employee-cost-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de coste del empleado&#34;,&#34;desc&#34;:&#34;Desglose del coste total del empleador: cotizaciones, impuestos de nómina y beneficios fijos mensuales.&#34;,&#34;cat&#34;:&#34;business&#34;,&#34;emoji&#34;:&#34;👥&#34;,&#34;tags&#34;:[]},{&#34;id&#34;:&#34;bmi-calculator&#34;,&#34;href&#34;:&#34;/es/tools/health/bmi-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de IMC y WHtR&#34;,&#34;desc&#34;:&#34;IMC y ratio cintura-altura con categorías OMS, umbrales asiáticos o
127pcionales, métrico o imperial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;❤️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;calorie-calculator&#34;,&#34;href&#34;:&#34;/es/tools/health/calorie-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de calorías&#34;,&#34;desc&#34;:&#34;BMR y TDEE (Mifflin-St Jeor) con NEAT y entrenamiento por separado, proteínas y grasas por kg según sexo, estimación de fibra y consejos de volumen limpio. Métrico o imperial.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🔥&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;unit-converter&#34;,&#34;href&#34;:&#34;/es/tools/math/unit-converter/&#34;,&#34;title&#34;:&#34;Convertidor de unidades&#34;,&#34;desc&#34;:&#34;Convierte longitud, masa, volumen, temperatura, área y velocidad. Métrico y US, al instante en el navegador.&#34;,&#34;cat&#34;:&#34;math&#34;,&#34;emoji&#34;:&#34;📏&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;tip-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/tip-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de propina&#34;,&#34;desc&#34;:&#34;Calcula propina, impuestos, total y reparto por persona. Base antes o después de impuestos - resultados al instante en el navegador.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🤝&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;qr-code-generator&#34;,&#34;href&#34;:&#34;/es/tools/utilities/qr-code-generator/&#34;,&#34;title&#34;:&#34;Generador de códigos QR&#34;,&#34;desc&#34;:&#34;Genera códigos QR para URL, WiFi, vCard, correo y texto. Logo, colores y estilos. Gratis en el navegador.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔳&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;password-generator&#34;,&#34;href&#34;:&#34;/es/tools/utilities/password-generator/&#34;,&#34;title&#34;:&#34;Generador de contraseñas&#34;,&#34;desc&#34;:&#34;Genera contraseñas fuertes y memorables con tus propias palabras. Fuerza ajustable, estimación de crack, 100 % en el navegador.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;discount-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/discount-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de descuento y precio rebajado&#34;,&#34;desc&#34;:&#34;Calcula el precio con descuento, el porcentaje de rebaja o el precio original. Gratis, al instante, en el navegador.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏷️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;age-calculator&#34;,&#34;href&#34;:&#34;/es/tools/utilities/age-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de edad y fechas&#34;,&#34;desc&#34;:&#34;Calcula la edad exacta, la diferencia entre fechas o suma/resta periodos. Gratis en el navegador.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🎂&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;hash-generator&#34;,&#34;href&#34;:&#34;/es/tools/utilities/hash-generator/&#34;,&#34;title&#34;:&#34;Generador de hash&#34;,&#34;desc&#34;:&#34;MD5, SHA-1, SHA-256, SHA-384 y SHA-512 desde texto o archivos.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;#️⃣&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;time-zone-converter&#34;,&#34;href&#34;:&#34;/es/tools/utilities/time-zone-converter/&#34;,&#34;title&#34;:&#34;Convertidor de zonas horarias&#34;,&#34;desc&#34;:&#34;Convierte hora entre zonas horarias con offsets DST correctos y compara varias regiones en una sola vista.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🌐&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;uuid-generator&#34;,&#34;href&#34;:&#34;/es/tools/utilities/uuid-generator/&#34;,&#34;title&#34;:&#34;Generador UUID / GUID&#34;,&#34;desc&#34;:&#34;Genera UUID v4, v1 y v7 online. Lotes de hasta 100, copiar o descargar TXT.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🆔&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;base-converter&#34;,&#34;href&#34;:&#34;/es/tools/utilities/base-converter/&#34;,&#34;title&#34;:&#34;Conversor de bases numéricas&#34;,&#34;desc&#34;:&#34;Convierte entre decimal, binario, hexadecimal y octal. Modo con signo, agrupación, sync al instante.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;🔢&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;markup-margin-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/markup-margin-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de margen&#34;,&#34;desc&#34;:&#34;Calcula markup, margen y precio de venta. Diferencia entre markup sobre coste y margen sobre precio.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;📊&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;sales-commission-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/sales-commission-calculator/&#34;,&#34;title&#34;:&#34;Calculadora comisión ventas&#34;,&#34;desc&#34;:&#34;Calcula comisión de ventas: tasa fija, tramos o reparto en equipo. Gratis en el navegador.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;💰&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;meeting-cost-calculator&#34;,&#34;href&#34;:&#34;/es/tools/utilities/meeting-cost-calculator/&#34;,&#34;title&#34;:&#34;Calculadora costo reunión&#34;,&#34;desc&#34;:&#34;Calcula el costo real de una reunión: participantes, duración, tarifas por hora y reloj en vivo. Gratis en el navegador.&#34;,&#34;cat&#34;:&#34;utilities&#34;,&#34;emoji&#34;:&#34;⏱️&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;running-pace-calculator&#34;,&#34;href&#34;:&#34;/es/tools/health/running-pace-calculator/&#34;,&#34;title&#34;:&#34;Calculadora ritmo y tiempo carrera&#34;,&#34;desc&#34;:&#34;Calcula ritmo, tiempo final o distancia. Presets, tabla splits, toggle km/mi. Gratis en el navegador.&#34;,&#34;cat&#34;:&#34;health&#34;,&#34;emoji&#34;:&#34;🏃&#34;,&#34;tags&#34;:[&#34;new&#34;]},{&#34;id&#34;:&#34;loan-calculator&#34;,&#34;href&#34;:&#34;/es/tools/finance/loan-calculator/&#34;,&#34;title&#34;:&#34;Calculadora de cuotas&#34;,&#34;desc&#34;:&#34;Calcula la cuota, compara hasta tres ofertas, comprueba la asequibilidad según ingresos, analiza la reestructuración y pagos anticipados con resumen inteligente, gráficos y tabla de amortización.&#34;,&#34;cat&#34;:&#34;finance&#34;,&#34;emoji&#34;:&#34;🏦&#34;,&#34;tags&#34;:[&#34;new&#34;]}]}" data-astro-cid-qk3db3zz> <div class="search-modal-container" data-astro-cid-qk3db3zz> <!-- STREFA 1 - Search bar --> <div class="search-header" data-astro-cid-qk3db3zz>
127 <svg class="search-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-qk3db3zz> <circle cx="11" cy="11" r="8" data-astro-cid-qk3db3zz></circle> <line x1="21" y1="21" x2="16.65" y2="16.65" data-astro-cid-qk3db3zz></line> </svg> <input id="search-input" type="text" placeholder="Search for tools..." class="search-input-field" autocomplete="off" data-astro-cid-qk3db3zz> <button id="search-close" class="search-esc-badge" data-astro-cid-qk3db3zz>
128ESC
129</button> </div> <!-- STREFA 2 - Body --> <div id="search-results" class="search-body" data-astro-cid-qk3db3zz> <!-- Empty state --> <div id="search-empty-state" class="search-empty-state" data-astro-cid-qk3db3zz> <div class="search-empty-icon" data-astro-cid-qk3db3zz> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-qk3db3zz> <circle cx="11" cy="11" r="8" data-astro-cid-qk3db3zz></circle> <line x1="21" y1="21" x2="16.65" y2="16.65" data-astro-cid-qk3db3zz></line> </svg> </div> <div id="search-empty-title" class="search-empty-title" data-astro-cid-qk3db3zz>Find any tool instantly</div> <div id="search-empty-sub" class="search-empty-sub" data-astro-cid-qk3db3zz>Type a name, category or keyword</div> <div id="search-kbd-hint-container" class="search-kbd-hint-container" data-astro-cid-qk3db3zz> <!-- Injected via JS --> </div> <div class="search-popular" data-astro-cid-qk3db3zz> <div id="search-popular-title" class="search-popular-title" data-astro-cid-qk3db3zz>Popular</div> <div class="search-results-list" data-astro-cid-qk3db3zz> <a href="/tools/finance/vat-calculator/" class="search-tile" data-astro-cid-qk3db3zz> <span class="search-tile-icon" data-astro-cid-qk3db3zz>🧾</span> <span id="popular-vat-name" class="search-tile-name" data-astro-cid-qk3db3zz>VAT Calculator</span> <span class="search-tile-cat" data-astro-cid-qk3db3zz>FINANCE</span> </a> <a href="/tools/health/bmi-calculator/" class="search-tile" data-astro-cid-qk3db3zz> <span class="search-tile-icon" data-astro-cid-qk3db3zz>⚖️</span> <span id="popular-bmi-name" class="search-tile-name" data-astro-cid-qk3db3zz>BMI Calculator</span> <span class="search-tile-cat" data-astro-cid-qk3db3zz>HEALTH</span> </a> <a href="/tools/math/percentage-calculator/" class="search-tile" data-astro-cid-qk3db3zz> <span class="search-tile-icon" data-astro-cid-qk3db3zz>%</span> <span id="popular-pct-name" class="search-tile-name" data-astro-cid-qk3db3zz>Percentage Calculator</span> <span class="search-tile-cat" data-astro-cid-qk3db3zz>MATH</span> </a> </div> </div> </div> <div id="search-results-list" class="search-results-list" hidden data-astro-cid-qk3db3zz></div> <p id="search-no-results" class="search-no-results" hidden data-astro-cid-qk3db3zz></p> </div> </div> </dialog> 
129<script type="module" src="/_astro/SearchModal.astro_astro_type_script_index_0_lang.Cz5gMh72.js"></script>
129 
129<script>(function(){const localizedToolLookup = {"/tools/finance/mortgage-calculator/":true,"/tools/finance/tip-calculator/":true,"/tools/finance/apr-calculator/":true,"/tools/finance/currency-converter/":true,"/tools/finance/invoice-generator/":true,"/tools/finance/salary-calculator/":true,"/tools/finance/vat-calculator/":true,"/tools/finance/investment-calculator/":true,"/tools/finance/income-tax-calculator/":true,"/tools/math/percentage-calculator/":true,"/tools/health/calorie-calculator/":true,"/tools/health/bmi-calculator/":true,"/tools/business/hosting-comparison/":true,"/tools/business/employee-cost-calculator/":true,"/tools/math/unit-converter/":true,"/tools/utilities/qr-code-generator/":true,"/tools/utilities/password-generator/":true,"/tools/finance/discount-calculator/":true,"/tools/utilities/age-calculator/":true,"/tools/utilities/hash-generator/":true,"/tools/utilities/time-zone-converter/":true,"/tools/utilities/uuid-generator/":true,"/tools/utilities/base-converter/":true,"/tools/finance/markup-margin-calculator/":true,"/tools/finance/sales-commission-calculator/":true,"/tools/utilities/meeting-cost-calculator/":true,"/tools/health/running-pace-calculator/":true,"/tools/finance/loan-calculator/":true};
130const localizedAppLookup = {"/apps/devaudit/":true,"/apps/aqr/":true,"/apps/aqr/privacy/":true,"/apps/devaudit/privacy/":true};
131const logoHomeI18n = {"en":{"logoHomeAlt":"Home page","logoHomeTitle":"Go to home page"},"pl":{"logoHomeAlt":"Strona główna","logoHomeTitle":"Przejdź do strony głównej"},"de":{"logoHomeAlt":"Startseite","logoHomeTitle":"Zur Startseite"},"fr":{"logoHomeAlt":"Page d'accueil","logoHomeTitle":"Aller à la page d'accueil"},"es":{"logoHomeAlt":"Página de inicio","logoHomeTitle":"Ir a la página de inicio"}};
132
133  // Navbar scroll: at top = transparent pill (no glass/border), same as landing after scroll
134  ;(function () {
135    var navbar = document.querySelector('.navbar');
136    if (!navbar) return;
137
138    function updateNavbar() {
139      var threshold = document.body.classList.contains('nav-wide') ? 24 : 20;
140      if (window.scrollY > threshold) {
141        navbar.classList.add('is-scrolled');
142      } else {
143        navbar.classList.remove('is-scrolled');
144      }
145    }
146
147    window.addEventListener('scroll', updateNavbar, { passive: true });
148    updateNavbar();
149  })();
150
151  // -- Theme toggle: etykieta w szufladzie mobile wg języka (en → angielski) + wyśrodkowanie (CSS) --
152  ;(function () {
153    var THEME_I18N = {
154      en: { nextLight: 'Light theme', nextDark: 'Dark theme' },
155      pl: { nextLight: 'Motyw jasny', nextDark: 'Motyw ciemny' },
156      de: { nextLight: 'Heller Modus', nextDark: 'Dunkler Modus' },
157      fr: { nextLight: 'Thème clair', nextDark: 'Thème sombre' },
158      es: { nextLight: 'Tema claro', nextDark: 'Tema oscuro' }
159    };
160    function getUiLang() {
161      return document.documentElement.getAttribute('data-lang') || localStorage.getItem('lang') || 'en';
162    }
163    function updateThemeLabel() {
164      var el = document.getElementById('themeToggleLabel');
165      var btn = document.getElementById('theme-toggle');
166      if (!el) return;
167      var t = document.documentElement.getAttribute('data-theme') || 'dark';
168      var pack = THEME_I18N[getUiLang()] || THEME_I18N.en;
169      var next = t === 'dark' ? pack.nextLight : pack.nextDark;
170      el.textContent = next;
171      if (btn) btn.setAttribute('aria-label', next);
172    }
173    updateThemeLabel();
174    document.addEventListener('langchange', updateThemeLabel);
175    var _btn = document.getElementById('theme-toggle');
176    if (_btn) {
177      _btn.addEventListener('click', function () {
178        var _current = document.documentElement.getAttribute('data-theme') || 'dark';
179        var _next = _current === 'dark' ? 'light' : 'dark';
180        document.documentElement.setAttribute('data-theme', _next);
181        localStorage.setItem('theme', _next);
182        updateThemeLabel();
183      });
184    }
185  })();
186
187  // -- Language switcher - FIX 1: CSS .open class, no hidden attr
188  // Na mobile: „EN – English”; na desktop: krótki kod (EN) - wg szerokości < 768
189  // Landing (SSR per locale): przy zmianie języka przechodzimy na /pl/, /de/ itd.
190  ;(function () {
191    var NAV_I18N = {
192      en: { allTools: 'All tools', extensions: 'Extensions', search: 'Search...', searchAria: 'Search tools' },
193      pl: { allTools: 'Wszystkie narzedzia', extensions: 'Rozszerzenia', search: 'Szukaj...', searchAria: 'Szukaj narzedzi' },
194      de: { allTools: 'Alle Tools', extensions: 'Erweiterungen', search: 'Suchen...', searchAria: 'Tools suchen' },
195      fr: { allTools: 'Tous les outils', extensions: 'Extensions', search: 'Rechercher...', searchAria: 'Rechercher des outils' },
196      es: { allTools: 'Todas las herramientas', extensions: 'Extensiones', search: 'Buscar...', searchAria: 'Buscar herramientas' }
197    };
198
199    function getNavLang() {
200      var fromData = document.documentElement.getAttribute('data-lang');
201      if (fromData && /^(en|pl|de|fr|es)$/.test(fromData)) return fromData;
202      var fromStorage = localStorage.getItem('lang');
203      if (fromStorage && /^(en|pl|de|fr|es)$/.test(fromStorage)) return fromStorage;
204      return 'en';
205    }
206
207    function updateAllToolsLabel() {
208      var link = document.getElementById('navbarAllToolsLink');
209      if (!link) return;
210      var lang = getNavLang();
211      var pack = NAV_I18N[lang] || NAV_I18N.en;
212      link.textContent = pack.allTools;
213      link.setAttribute('aria-label', pack.allTools);
214    }
215
216    function updateExtensionsLabel() {
217      var lang = getNavLang();
218      var pack = NAV_I18N[lang] || NAV_I18N.en;
219      ['navbarExtensionsLink', 'navbarExtensionsDrawerLink'].forEach(function (id) {
220        var link = document.getElementById(id);
221        if (!link) return;
222        link.textContent = pack.extensions;
223        link.setAttribute('aria-label', pack.extensions);
224      });
225    }
226
227    function updateSearchLabel() {
228      var labelEl = document.getElementById('navbarSearchLabel');
229      var btnEl = document.getElementById('search-trigger');
230      var lang = getNavLang();
231      var pack = NAV_I18N[lang] || NAV_I18N.en;
232      if (labelEl) labelEl.textContent = pack.search;
233      if (btnEl) btnEl.setAttribute('aria-label', pack.searchAria);
234    }
235
236    function updateLogoAlt() {
237      var link = document.getElementById('navbarLogoLink');
238      var lang = getNavLang();
239      var pack = logoHomeI18n[lang] || logoHomeI18n.en;
240      if (link) {
241        link.setAttribute('aria-label', pack.logoHomeAlt);
242        link.setAttribute('title', pack.logoHomeTitle);
243      }
244    }
245
246    updateAllToolsLabel();
247    updateExtensionsLabel();
248    updateSearchLabel();
249    updateLogoAlt();
250    document.addEventListener('langchange', updateAllToolsLabel);
251    document.addEventListener('langchange', updateExtensionsLabel);
252    document.addEventListener('langchange', updateSearchLabel);
253    document.addEventListener('langchange', updateLogoAlt);
254
255    var HOME_LANGS = ['en', 'pl', 'de', 'fr', 'es'];
256
257    function isHomePath(pathname) {
258      var path = (pathname || '/').replace(/\/+$/, '') || '/';
259      if (path === '/') return true;
260      var seg = path.split('/').filter(Boolean);
261      return seg.length === 1 && HOME_LANGS.indexOf(seg[0]) >= 0;
262    }
263
264    function getHomePageLang(pathname) {
265      var path = (pathname || '/').replace(/\/+$/, '') || '/';
266      if (path === '/') return 'en';
267      var seg = path.split('/').filter(Boolean);
268      if (seg.length === 1 && HOME_LANGS.indexOf(seg[0]) >= 0) return seg[0];
269      return 'en';
270    }
271
272    function homeUrlForLang(lang) {
273      if (lang === 'en') return '/';
274      return '/' + lang + '/';
275    }
276
277    function isToolsHubPath(pathname) {
278      var path = (pathname || '/').replace(/\/+$/, '') || '/';
279      if (path === '/tools') return true;
280      var seg = path.split('/').filter(Boolean);
281      return seg.length === 2 && HOME_LANGS.indexOf(seg[0]) >= 0 && seg[1] === 'tools';
282    }
283
284    function getToolsHubPageLang(pathname) {
285      var path = (pathname || '/').replace(/\/+$/, '') || '/';
286      if (path === '/tools') return 'en';
287      var seg = path.split('/').filter(Boolean);
288      if (seg.length === 2 && seg[1] === 'tools' && HOME_LANGS.indexOf(seg[0]) >= 0) return seg[0];
289      return 'en';
290    }
291
292    function toolsHubUrlForLang(lang) {
293      if (lang === 'en') return '/tools/';
294      return '/' + lang + '/tools/';
295    }
296
297    function isAppsHubPath(pathname) {
298      var path = (pathname || '/').replace(/\/+$/, '') || '/';
299      if (path === '/apps') return true;
300      var seg = path.split('/').filter(Boolean);
301      return seg.length === 2 && HOME_LANGS.indexOf(seg[0]) >= 0 && seg[1] === 'apps';
302    }
303
304    function isAppsPath(pathname) {
305      var path = (pathname || '/').replace(/\/+$/, '') || '/';
306      if (path === '/apps') return true;
307      var parts = path.split('/').filter(Boolean);
308      if (parts.length >= 1 && parts[0] === 'apps') return true;
309      if (parts.length >= 2 && HOME_LANGS.indexOf(parts[0]) >= 0 && parts[1] === 'apps') return true;
310      return false;
311    }
312
313    function getAppsHubPageLang(pathname) {
314      var path = (pathname || '/').replace(/\/+$/, '') || '/';
315      if (path === '/apps') return 'en';
316      var seg = path.split('/').filter(Boolean);
317      if (seg.length === 2 && seg[1] === 'apps' && HOME_LANGS.indexOf(seg[0]) >= 0) return seg[0];
318      return 'en';
319    }
320
321    function appsHubUrlForLang(lang) {
322      if (lang === 'en') return '/apps/';
323      return '/' + lang + '/apps/';
324    }
325
326    /** Język z URL rozszerzenia: /apps/.../ (en) lub /pl/apps/.../ */
327    function getAppsPageLang(pathname) {
328      var path = (pathname || '/').replace(/\/+$/, '') || '/';
329      var parts = path.split('/').filter(Boolean);
330      if (parts.length >= 2 && HOME_LANGS.indexOf(parts[0]) >= 0 && parts[1] === 'apps') {
331        return parts[0];
332      }
333      if (parts.length >= 1 && parts[0] === 'apps') return 'en';
334      return 'en';
335    }
336
337    /** Fizyczna ścieżka rozszerzenia: zawsze /apps/.../ */
338    function physicalAppsPath(pathname) {
339      var path = (pathname || '/').replace(/\/+$/, '') || '/';
340      var parts = path.split('/').filter(Boolean);
341      if (parts.length >= 3 && HOME_LANGS.indexOf(parts[0]) >= 0 && parts[1] === 'apps') {
342        return '/' + parts.slice(1).join('/') + '/';
343      }
344      if (parts.length >= 2 && parts[0] === 'apps') {
345        return '/' + parts.join('/') + '/';
346      }
347      return null;
348    }
349
350    function appPageUrlForLang(pathname, lang) {
351      var phys = physicalAppsPath(pathname);
352      if (!phys) return null;
353      var core = phys.replace(/\/+$/, '');
354      if (lang === 'en') return core + '/';
355      return '/' + lang + core + '/';
356    }
357
358    function updateHubLinkActiveState() {
359      var pathname = window.location.pathname;
360      var toolsLink = document.getElementById('navbarAllToolsLink');
361      var appsLink = document.getElementById('navbarExtensionsLink');
362      if (toolsLink) {
363        toolsLink.classList.toggle('is-active', isToolsHubPath(pathname) || (physicalToolsPath(pathname) !== null));
364      }
365      if (appsLink) {
366        appsLink.classList.toggle('is-active', isAppsPath(pathname));
367      }
368      var appsDrawer = document.getElementById('navbarExtensionsDrawerLink');
369      if (appsDrawer) {
370        appsDrawer.classList.toggle('is-active', isAppsPath(pathname));
371      }
372    }
373
374    var switcher = document.getElementById('langSwitcher');
375    var btn      = document.getElementById('langBtn');
376    var panel    = document.getElementById('langPanel');
377    var label    = document.getElementById('langLabel');
378    if (!switcher || !btn || !panel || !label) return;
379
380    function isMobileLang() {
381      return window.innerWidth < 768;
382    }
383    function setLangButtonText() {
384      var act = panel.querySelector('.lang-item.active');
385      if (!act) return;
386      var code = act.getAttribute('data-code') || act.dataset.label;
387      var nm   = act.querySelector('.lang-name');
388      var name = nm ? nm.textContent.replace(/\s+/g, ' ').trim() : '';
389      if (isMobileLang() && name) {
390        label.textContent = code + ' \u2013 ' + name;
391      } else {
392        label.textContent = act.dataset.label || code;
393      }
394    }
395
396    // Na landing URL jest źródłem prawdy; na podstronach zostaje localStorage z kalkulatorów
397    if (isHomePath(window.location.pathname)) {
398      var pathLang = getHomePageLang(window.location.pathname);
399      localStorage.setItem('lang', pathLang);
400      document.documentElement.lang = pathLang;
401      document.documentElement.setAttribute('data-lang', pathLang);
402    }
403
404    if (isToolsHubPath(window.location.pathname)) {
405      var thLang = getToolsHubPageLang(window.location.pathname);
406      localStorage.setItem('lang', thLang);
407      document.documentElement.lang = thLang;
408      document.documentElement.setAttribute('data-lang', thLang);
409    }
410
411    if (isAppsPath(window.location.pathname)) {
412      var ahLang = getAppsPageLang(window.location.pathname);
413      localStorage.setItem('lang', ahLang);
414      document.documentElement.lang = ahLang;
415      document.documentElement.setAttribute('data-lang', ahLang);
416    }
417
418    /** Język z prefiksu URL (/pl/tools/...) - musi nadpisać localStorage na tej stronie */
419    function getToolSubpageLangFromUrl(pathname) {
420      var path = (pathname || '/').replace(/\/+$/, '') || '/';
421      var parts = path.split('/').filter(Boolean);
422      if (parts.length >= 2 && HOME_LANGS.indexOf(parts[0]) >= 0 && parts[1] === 'tools') {
423        return parts[0];
424      }
425      return null;
426    }
427
428    /** Fizyczna ścieżka narzędzia: zawsze /tools/.../ */
429    function physicalToolsPath(pathname) {
430      var path = (pathname || '/').replace(/\/+$/, '') || '/';
431      var parts = path.split('/').filter(Boolean);
432      if (parts.length >= 2 && HOME_LANGS.indexOf(parts[0]) >= 0 && parts[1] === 'tools') {
433        return '/' + parts.slice(1).join('/') + '/';
434      }
435      if (parts.length >= 1 && parts[0] === 'tools') {
436        return '/' + parts.join('/') + '/';
437      }
438      return null;
439    }
440
441    function toolPageUrlForLang(pathname, lang) {
442      var phys = physicalToolsPath(pathname);
443      if (!phys) return null;
444      var core = phys.replace(/\/+$/, '');
445      if (lang === 'en') return core + '/';
446      return '/' + lang + core + '/';
447    }
448
449    /** Strony statyczne z buildem /{lang}/slug/ (EN bez prefiksu /en/) */
450    var STATIC_LOCALIZED_SLUGS = ['about', 'contact', 'security', 'privacy', 'terms', 'cookies', 'advertise', 'blog'];
451
452    function staticPageCore(pathname) {
453      var path = (pathname || '/').replace(/\/+$/, '') || '/';
454      var parts = path.split('/').filter(Boolean);
455      if (parts.length === 0) return null;
456      var first = parts[0];
457      if (HOME_LANGS.indexOf(first) >= 0) parts = parts.slice(1);
458      if (parts.length !== 1) return null;
459      var slug = parts[0];
460      if (STATIC_LOCALIZED_SLUGS.indexOf(slug) < 0) return null;
461      return '/' + slug + '/';
462    }
463
464    /** Język z URL bloga: /blog/ (en) lub /pl/blog/ */
465    function getBlogPageLangFromUrl(pathname) {
466      var path = (pathname || '/').replace(/\/+$/, '') || '/';
467      var parts = path.split('/').filter(Boolean);
468      if (parts.length === 1 && parts[0] === 'blog') return 'en';
469      if (parts.length === 2 && HOME_LANGS.indexOf(parts[0]) >= 0 && parts[1] === 'blog') {
470        return parts[0];
471      }
472      return null;
473    }
474
475    /** Fizyczna ścieżka wpisu: /blog/slug/ (bez prefiksu języka) */
476    function physicalBlogPostPath(pathname) {
477      var path = (pathname || '/').replace(/\/+$/, '') || '/';
478      var parts = path.split('/').filter(Boolean);
479      if (parts.length >= 3 && HOME_LANGS.indexOf(parts[0]) >= 0 && parts[1] === 'blog') {
480        return '/' + parts.slice(1).join('/') + '/';
481      }
482      if (parts.length >= 2 && parts[0] === 'blog') {
483        return '/' + parts.join('/') + '/';
484      }
485      return null;
486    }
487
488    function blogPostUrlForLang(pathname, lang) {
489      var phys = physicalBlogPostPath(pathname);
490      if (!phys) return null;
491      var core = phys.replace(/\/+$/, '');
492      if (lang === 'en') return core + '/';
493      return '/' + lang + core + '/';
494    }
495
496    function staticPageSlugFromCore(core) {
497      return (core || '').replace(/^\/+|\/+$/g, '');
498    }
499
500    function staticPageUrlForLang(pathname, lang) {
501      var core = staticPageCore(pathname);
502      if (!core) return null;
503      var slug = staticPageSlugFromCore(core);
504      if (STATIC_LOCALIZED_SLUGS.indexOf(slug) < 0) return core;
505      if (lang === 'en') return core;
506      return '/' + lang + core;
507    }
508
509    var urlToolLang = getToolSubpageLangFromUrl(window.location.pathname);
510    var urlBlogLang = getBlogPageLangFromUrl(window.location.pathname);
511    if (urlToolLang !== null) {
512      localStorage.setItem('lang', urlToolLang);
513      document.documentElement.lang = urlToolLang;
514      document.documentElement.setAttribute('data-lang', urlToolLang);
515    } else if (urlBlogLang !== null) {
516      localStorage.setItem('lang', urlBlogLang);
517      document.documentElement.lang = urlBlogLang;
518      document.documentElement.setAttribute('data-lang', urlBlogLang);
519    } else if (!isHomePath(window.location.pathname) && !isToolsHubPath(window.location.pathname)) {
520      var memLang = localStorage.getItem('lang');
521      if (memLang && HOME_LANGS.indexOf(memLang) >= 0) {
522        document.documentElement.lang = memLang;
523        document.documentElement.setAttribute('data-lang', memLang);
524      }
525    }
526
527    var saved = localStorage.getItem('lang') ||
528      document.documentElement.getAttribute('data-lang') || 'en';
529    var savedItem = panel.querySelector('[data-lang="' + saved + '"]');
530    if (savedItem) {
531      savedItem.classList.add('active');
532    } else {
533      var first = panel.querySelector('.lang-item');
534      if (first) first.classList.add('active');
535    }
536    setLangButtonText();
537
538    // Logo → strona główna w aktualnym języku (landing lub preferencja z localStorage)
539    var logo = document.querySelector('a.navbar-logo');
540    if (logo) {
541      var hl = isHomePath(window.location.pathname)
542        ? getHomePageLang(window.location.pathname)
543        : isToolsHubPath(window.location.pathname)
544          ? getToolsHubPageLang(window.location.pathname)
545          : isAppsPath(window.location.pathname)
546            ? getAppsPageLang(window.location.pathname)
547          : (localStorage.getItem('lang') || 'en');
548      if (HOME_LANGS.indexOf(hl) < 0) hl = 'en';
549      logo.setAttribute('href', homeUrlForLang(hl));
550    }
551
552    var allTools = document.querySelector('a.navbar-all-tools');
553    if (allTools) {
554      var atl;
555      if (isHomePath(window.location.pathname)) {
556        atl = getHomePageLang(window.location.pathname);
557      } else if (isToolsHubPath(window.location.pathname)) {
558        atl = getToolsHubPageLang(window.location.pathname);
559      } else if (isAppsPath(window.location.pathname)) {
560        atl = getAppsPageLang(window.location.pathname);
561      } else {
562        atl = localStorage.getItem('lang') || 'en';
563      }
564      if (HOME_LANGS.indexOf(atl) < 0) atl = 'en';
565      allTools.setAttribute('href', toolsHubUrlForLang(atl));
566    }
567
568    document.querySelectorAll('a.navbar-all-extensions').forEach(function (allExtensions) {
569      var ael;
570      if (isHomePath(window.location.pathname)) {
571        ael = getHomePageLang(window.location.pathname);
572      } else if (isAppsPath(window.location.pathname)) {
573        ael = getAppsPageLang(window.location.pathname);
574      } else if (isToolsHubPath(window.location.pathname)) {
575        ael = getToolsHubPageLang(window.location.pathname);
576      } else {
577        ael = localStorage.getItem('lang') || 'en';
578      }
579      if (HOME_LANGS.indexOf(ael) < 0) ael = 'en';
580      allExtensions.setAttribute('href', appsHubUrlForLang(ael));
581    });
582
583    updateHubLinkActiveState();
584
585    function openPanel() {
586      switcher.classList.add('open');
587      btn.setAttribute('aria-expanded', 'true');
588    }
589    function closePanel() {
590      switcher.classList.remove('open');
591      btn.setAttribute('aria-expanded', 'false');
592    }
593
594    btn.addEventListener('click', function (e) {
595      e.stopPropagation();
596      var willOpen = !switcher.classList.contains('open');
597      switcher.classList.contains('open') ? closePanel() : openPanel();
598      if (willOpen) prefetchLangAlternates();
599    });
600
601    // Close on outside click
602    document.addEventListener('click', function () {
603      closePanel();
604    });
605
606    // Close on Escape
607    document.addEventListener('keydown', function (e) {
608      if (e.key === 'Escape') closePanel();
609    });
610
611    window.addEventListener('resize', function () { setLangButtonText(); }, { passive: true });
612
613    function normPath(p) {
614      var x = (p || '/').replace(/\/+$/, '') || '/';
615      return x + '/';
616    }
617
618    var prefetchedLangUrls = Object.create(null);
619
620    function prefetchLangUrl(url) {
621      if (!url || prefetchedLangUrls[url]) return;
622      prefetchedLangUrls[url] = true;
623      try {
624        var link = document.createElement('link');
625        link.rel = 'prefetch';
626        link.href = url;
627        link.as = 'document';
628        document.head.appendChild(link);
629      } catch (e) {}
630    }
631
632    function prefetchLangAlternates() {
633      var pathname = window.location.pathname;
634      panel.querySelectorAll('.lang-item').forEach(function (item) {
635        var lang = item.dataset.lang || 'en';
636        var target = resolveLangNavigationTarget(pathname, lang);
637        if (target && normPath(target) !== normPath(pathname)) {
638          prefetchLangUrl(target);
639        }
640      });
641    }
642
643    /** Wymusza malowanie paska zanim startuje nawigacja (inaczej prefetch = instant reload). */
644    function beginLangNavigation(url, lang) {
645      localStorage.setItem('lang', lang);
646      document.documentElement.classList.add('lang-nav-pending');
647      var started = Date.now();
648      var minVisibleMs = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 320;
649
650      function go() {
651        window.location.assign(url);
652      }
653
654      requestAnimationFrame(function () {
655        requestAnimationFrame(function () {
656          var wait = minVisibleMs - (Date.now() - started);
657          if (wait > 0) setTimeout(go, wait);
658          else go();
659        });
660      });
661    }
662
663    /** Gdy zwraca URL – pełna nawigacja SSR; nie wolno wtedy langchange / applyTranslations (migotanie UI). */
664    function resolveLangNavigationTarget(pathname, lang) {
665      if (isHomePath(pathname)) {
666        var cur = getHomePageLang(pathname);
667        if (cur !== lang) return homeUrlForLang(lang);
668        return null;
669      }
670      if (isToolsHubPath(pathname)) {
671        var curT = getToolsHubPageLang(pathname);
672        if (curT !== lang) return toolsHubUrlForLang(lang);
673        return null;
674      }
675      if (isAppsHubPath(pathname)) {
676        var curA = getAppsHubPageLang(pathname);
677        if (curA !== lang) return appsHubUrlForLang(lang);
678        return null;
679      }
680
681      var toolTarget = toolPageUrlForLang(pathname, lang);
682      if (toolTarget && normPath(toolTarget) !== normPath(pathname)) {
683        var phys = physicalToolsPath(pathname);
684        var normPhys = phys ? normPath(phys) : '';
685        var hasLocalizedBuild =
686          localizedToolLookup && localizedToolLookup[normPhys] === true;
687        if (lang === 'en' || hasLocalizedBuild) return toolTarget;
688      }
689
690      var appTarget = appPageUrlForLang(pathname, lang);
691      if (appTarget && normPath(appTarget) !== normPath(pathname)) {
692        var appPhys = physicalAppsPath(pathname);
693        var normAppPhys = appPhys ? normPath(appPhys) : '';
694        var hasLocalizedAppBuild =
695          localizedAppLookup && localizedAppLookup[normAppPhys] === true;
696        if (!hasLocalizedAppBuild && appPhys) {
697          var appPhysNorm = normPath(appPhys);
698          for (var appKey in localizedAppLookup) {
699            if (!localizedAppLookup[appKey]) continue;
700            var appPrefix = normPath(appKey).replace(/\/+$/, '');
701            if (appPhysNorm === normPath(appKey) || appPhysNorm.indexOf(appPrefix + '/') === 0) {
702              hasLocalizedAppBuild = true;
703              break;
704            }
705          }
706        }
707        if (lang === 'en' || hasLocalizedAppBuild) return appTarget;
708      }
709
710      var blogPostTarget = blogPostUrlForLang(pathname, lang);
711      if (blogPostTarget && normPath(blogPostTarget) !== normPath(pathname)) {
712        return blogPostTarget;
713      }
714
715      var staticTarget = staticPageUrlForLang(pathname, lang);
716      if (staticTarget && normPath(staticTarget) !== normPath(pathname)) {
717        return staticTarget;
718      }
719
720      return null;
721    }
722
723    // Option selection
724    panel.querySelectorAll('.lang-item').forEach(function (item) {
725      item.addEventListener('mouseenter', function () {
726        var lang = item.dataset.lang || 'en';
727        var target = resolveLangNavigationTarget(window.location.pathname, lang);
728        if (target) prefetchLangUrl(target);
729      }, { passive: true });
730
731      item.addEventListener('click', function (e) {
732        e.stopPropagation();
733        var lang = item.dataset.lang || 'en';
734        var pathname = window.location.pathname;
735        var navigateTo = resolveLangNavigationTarget(pathname, lang);
736
737        if (navigateTo) {
738          beginLangNavigation(navigateTo, lang);
739          return;
740        }
741
742        // Strony bez osobnego buildu per język: przełącz tylko po stronie klienta
743        panel.querySelectorAll('.lang-item').forEach(function (i) {
744          i.classList.remove('active');
745        });
746        item.classList.add('active');
747        setLangButtonText();
748        closePanel();
749
750        localStorage.setItem('lang', lang);
751        document.documentElement.lang = lang;
752        document.documentElement.setAttribute('data-lang', lang);
753
754        if (window.i18n && typeof window.i18n.applyTranslations === 'function') {
755          window.i18n.applyTranslations(lang);
756        }
757
758        document.dispatchEvent(new CustomEvent('langchange', { detail: { lang: lang } }));
759      });
760    });
761
762    prefetchLangAlternates();
763  })();
764
765  // -- Mobile: szuflada (język + motyw), All tools + search zawsze w pasku --
766  ;(function () {
767    function mql() {
768      return window.matchMedia('(max-width: 768px)').matches;
769    }
770
771    function getMobileNavEls() {
772      return {
773        burger: document.getElementById('navBurger'),
774        extras: document.getElementById('navbarExtras'),
775        backdrop: document.getElementById('navbarBackdrop'),
776        closeBtn: document.getElementById('navDrawerClose'),
777      };
778    }
779
780    function releaseDrawerFocus() {
781      var els = getMobileNavEls();
782      if (!els.extras || !els.burger) return;
783
784      var active = document.activeElement;
785      if (!(active instanceof HTMLElement) || !els.extras.contains(active)) return;
786
787      els.burger.classList.remove('is-open');
788      els.burger.focus({ preventScroll: true });
789
790      if (document.activeElement === active) {
791        active.blur();
792      }
793    }
794
795    function syncDrawerA11yState() {
796      var els = getMobileNavEls();
797      if (!els.extras) return;
798
799      if (!mql()) {
800        els.extras.removeAttribute('inert');
801        els.extras.removeAttribute('aria-hidden');
802        return;
803      }
804
805      if (document.body.classList.contains('nav-mobile-open')) {
806        els.extras.removeAttribute('inert');
807        els.extras.removeAttribute('aria-hidden');
808      } else {
809        releaseDrawerFocus();
810        els.extras.setAttribute('inert', '');
811        els.extras.removeAttribute('aria-hidden');
812      }
813    }
814
815    function setOpen(open) {
816      var els = getMobileNavEls();
817      if (!els.burger || !els.extras || !els.backdrop) return;
818
819      if (open) {
820        document.body.classList.add('nav-mobile-open');
821        els.extras.classList.add('is-open');
822        els.burger.classList.add('is-open');
823        els.burger.setAttribute('aria-expanded', 'true');
824        els.burger.setAttribute('aria-label', 'Close menu');
825        els.backdrop.setAttribute('aria-hidden', 'false');
826        syncDrawerA11yState();
827        requestAnimationFrame(function () {
828          if (els.closeBtn) els.closeBtn.focus({ preventScroll: true });
829        });
830      } else {
831        document.body.classList.remove('nav-mobile-open');
832        els.extras.classList.remove('is-open');
833        els.burger.classList.remove('is-open');
834        els.burger.setAttribute('aria-expanded', 'false');
835        els.burger.setAttribute('aria-label', 'Open menu');
836        els.backdrop.setAttribute('aria-hidden', 'true');
837        syncDrawerA11yState();
838        var langSwitcher = document.getElementById('langSwitcher');
839        if (langSwitcher) langSwitcher.classList.remove('open');
840      }
841    }
842
843    function closeMobileMenu() {
844      if (mql() && document.body.classList.contains('nav-mobile-open')) {
845        setOpen(false);
846      }
847    }
848
849    function onBackdropDismiss(e) {
850      e.preventDefault();
851      closeMobileMenu();
852    }
853
854    function initMobileNavDrawer() {
855      var els = getMobileNavEls();
856      if (!els.burger || !els.extras || !els.backdrop || els.burger.dataset.navDrawerBound === '1') return;
857
858      els.burger.addEventListener('click', function (e) {
859        e.stopPropagation();
860        if (!mql()) return;
861        els.burger.classList.remove('is-pressing');
862        void els.burger.offsetWidth;
863        els.burger.classList.add('is-pressing');
864        window.setTimeout(function () { els.burger.classList.remove('is-pressing'); }, 280);
865        setOpen(!document.body.classList.contains('nav-mobile-open'));
866      });
867
868      if (els.closeBtn) {
869        els.closeBtn.addEventListener('click', function (e) {
870          e.stopPropagation();
871          if (!document.body.classList.contains('nav-mobile-open')) return;
872          var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
873          els.closeBtn.classList.remove('is-pressing');
874          void els.closeBtn.offsetWidth;
875          els.closeBtn.classList.add('is-pressing');
876          window.setTimeout(function () {
877            els.closeBtn.classList.remove('is-pressing');
878            closeMobileMenu();
879          }, reduce ? 0 : 160);
880        });
881      }
882
883      els.backdrop.addEventListener('click', closeMobileMenu);
884      els.backdrop.addEventListener('touchend', onBackdropDismiss, { passive: false });
885
886      var searchBtn = document.getElementById('search-trigger');
887      if (searchBtn) {
888        searchBtn.addEventListener('click', closeMobileMenu);
889      }
890
891      els.burger.dataset.navDrawerBound = '1';
892    }
893
894    if (!document.documentElement.dataset.navMobileDocBound) {
895      document.documentElement.dataset.navMobileDocBound = '1';
896
897      document.addEventListener('click', function (e) {
898        if (!document.body.classList.contains('nav-mobile-open') || !mql()) return;
899        var target = e.target;
900        if (!(target instanceof Node)) return;
901        var els = getMobileNavEls();
902        if (!els.extras || !els.burger) return;
903        if (els.extras.contains(target) || els.burger.contains(target)) return;
904        closeMobileMenu();
905      });
906
907      window.addEventListener('resize', function () {
908        if (!mql()) setOpen(false);
909        syncDrawerA11yState();
910      });
911
912      document.addEventListener('keydown', function (e) {
913        if (e.key === 'Escape' && document.body.classList.contains('nav-mobile-open')) {
914          setOpen(false);
915        }
916      });
917
918      document.addEventListener('astro:page-load', closeMobileMenu);
919    }
920
921    initMobileNavDrawer();
922    syncDrawerA11yState();
923    document.addEventListener('astro:page-load', initMobileNavDrawer);
924    document.addEventListener('astro:page-load', syncDrawerA11yState);
925  })();
926})();</script>
926 <main id="main">  <section class="document-wrapper" data-astro-cid-vdrf3zw3> <h1 data-astro-cid-vdrf3zw3>About AnyServ</h1> <p data-astro-cid-vdrf3zw3>Who we are, what we build, and why privacy comes first.</p> <p data-astro-cid-vdrf3zw3>AnyServ was built on a simple belief: useful tools should be free, fast, and private.</p> <p data-astro-cid-vdrf3zw3>We don&#39;t ask you to create an account. We don&#39;t sell your data. We don&#39;t track what you calculate, what you convert, or what you plan. The numbers you enter stay in your browser - and that&#39;s exactly where they belong.</p> <p data-astro-cid-vdrf3zw3>Our goal is straightforward: build a growing library of tools that genuinely help people in their daily lives and work. Not just finance professionals or business owners - everyone. Whether you&#39;re a student checking your GPA, a parent planning a family budget, a freelancer generating an invoice, or just someone curious about how compound interest works - there&#39;s something here for you. 15+ free tools, always 0 Dollar $, available in 5 languages (EN, PL, DE, FR, ES).</p> <p data-astro-cid-vdrf3zw3>We collect only what&#39;s technically necessary to keep the site running: your language preference, your theme choice, and a cached exchange rate. We use Google Analytics to measure traffic - you control this through our cookie settings. No profiles, no advertising fingerprints beyond what you explicitly consent to.</p> <p data-astro-cid-vdrf3zw3>AnyServ stays independent thanks to you - through ads you choose not to block, and partnerships we&#39;re selectively building with services we genuinely trust. Every calculator you use, every result you copy, every tool that saves you time - that&#39;s what keeps AnyServ growing and free for everyone. We&#39;re grateful for your trust and support.</p> <p data-astro-cid-vdrf3zw3>We&#39;re just getting started. If there&#39;s a tool you&#39;d like to see, write to us at <a href="mailto:[email protected]" class="doc-link" data-astro-cid-vdrf3zw3>[email protected]</a>.</p> <div class="about-kofi" aria-label="Support AnyServ on Ko-fi" data-astro-cid-vdrf3zw3> <a class="about-kofi__link" href="https://ko-fi.com/anyserv" target="_blank" rel="noopener noreferrer" data-astro-cid-vdrf3zw3> <img class="about-kofi__badge about-kofi__badge--on-dark" src="/images/support_me_on_kofi_white.png" alt="Support AnyServ on Ko-fi" width="320" height="92" loading="lazy" decoding="async" data-astro-cid-vdrf3zw3> <img class="about-kofi__badge about-kofi__badge--on-light" src="/images/support_me_on_kofi_dark.png" alt="Support AnyServ on Ko-fi" width="320" height="92" loading="lazy" decoding="async" data-astro-cid-vdrf3zw3> </a> </div> </section>  </main> <footer class="anyserv-footer" data-astro-cid-sz7xmlte> <div class="footer-inner" data-astro-cid-sz7xmlte> <div class="footer-grid" data-astro-cid-sz7xmlte> <!-- Col 1: Brand --> <div class="footer-brand" data-astro-cid-sz7xmlte> <a href="/" class="footer-logo" id="footerLogoLink" aria-label="Home page" title="Go to home page" data-astro-cid-sz7xmlte> <img src="/icons/logo.svg" alt="" id="footerLogoImg" width="28" height="28" loading="lazy" decoding="async" class="footer-logo-img" data-astro-cid-sz7xmlte> <span class="footer-wordmark" data-astro-cid-sz7xmlte>Any<span class="footer-serv" data-astro-cid-sz7xmlte>Serv</span></span> </a> <p class="footer-tagline" data-astro-cid-sz7xmlte>Any service, instantly in your browser.</p> </div> <!-- Col 2: Top Tools --> <nav class="footer-col" aria-labelledby="footer-col-top-tools" data-astro-cid-sz7xmlte> <p id="footer-col-top-tools" class="footer-col-title" data-astro-cid-sz7xmlte>Top Tools</p> <ul class="footer-links" data-astro-cid-sz7xmlte> <li data-astro-cid-sz7xmlte> <a href="/tools/math/percentage-calculator/" class="footer-link" data-astro-cid-sz7xmlte> Percentage Calculator </a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/finance/mortgage-calculator/" class="footer-link" data-astro-cid-sz7xmlte> Mortgage Calculator </a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/finance/vat-calculator/" class="footer-link" data-astro-cid-sz7xmlte> Tax Calculator (VAT / GST) </a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/finance/salary-calculator/" class="footer-link" data-astro-cid-sz7xmlte> Salary Calculator 2026 </a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/finance/currency-converter/" class="footer-link" data-astro-cid-sz7xmlte> Currency Converter </a> </li> </ul> </nav> <!-- Col 3: Categories --> <nav class="footer-col" aria-labelledby="footer-col-categories" data-astro-cid-sz7xmlte> <p id="footer-col-categories" class="footer-col-title" data-astro-cid-sz7xmlte>Categories</p> <ul class="footer-links" data-astro-cid-sz7xmlte> <li data-astro-cid-sz7xmlte> <a href="/tools/?category=math" class="footer-link" data-astro-cid-sz7xmlte>Math &amp; Numbers</a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/?category=finance" class="footer-link" data-astro-cid-sz7xmlte>Finance &amp; Money</a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/?category=business" class="footer-link" data-astro-cid-sz7xmlte>Business &amp; Work</a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/?category=health" class="footer-link" data-astro-cid-sz7xmlte>Health &amp; Wellness</a> </li><li data-astro-cid-sz7xmlte> <a href="/tools/?category=utilities" class="footer-link" data-astro-cid-sz7xmlte>Web Utilities</a> </li> <li data-astro-cid-sz7xmlte> <a href="/tools/" class="footer-link footer-link--accent" data-astro-cid-sz7xmlte>All tools -&gt;</a> </li> </ul> </nav>
926 <!-- Col 4: AnyServ --> <nav class="footer-col" aria-labelledby="footer-col-anyserv" data-astro-cid-sz7xmlte> <p id="footer-col-anyserv" class="footer-col-title" data-astro-cid-sz7xmlte>AnyServ</p> <div class="footer-anyserv-split" data-astro-cid-sz7xmlte> <ul class="footer-links" data-astro-cid-sz7xmlte> <li data-astro-cid-sz7xmlte><a href="/about/" class="footer-link" data-astro-cid-sz7xmlte>About</a></li> <li data-astro-cid-sz7xmlte><a href="/featured-on/" class="footer-link" id="footer-featured-on-link" data-astro-cid-sz7xmlte>Featured On</a></li> <li data-astro-cid-sz7xmlte><a href="/contact/" class="footer-link" data-astro-cid-sz7xmlte>Contact</a></li> <li data-astro-cid-sz7xmlte><a href="/security/" class="footer-link" data-astro-cid-sz7xmlte>Security</a></li> <li data-astro-cid-sz7xmlte><a href="https://status.anyserv.eu" target="_blank" rel="noopener noreferrer" class="footer-link" data-astro-cid-sz7xmlte>Status</a></li> <li data-astro-cid-sz7xmlte><a href="https://games.anyserv.eu" target="_blank" rel="noopener noreferrer" class="footer-link" id="footer-games-link" data-astro-cid-sz7xmlte>Games</a></li> </ul> <ul class="footer-links" data-astro-cid-sz7xmlte> <li data-astro-cid-sz7xmlte><a href="/blog/" class="footer-link" data-astro-cid-sz7xmlte>Blog</a></li> <li data-astro-cid-sz7xmlte><a href="/advertise/" class="footer-link" data-astro-cid-sz7xmlte>Advertisers</a></li> <li data-astro-cid-sz7xmlte><a href="/privacy/" class="footer-link" data-astro-cid-sz7xmlte>Privacy Policy</a></li> <li data-astro-cid-sz7xmlte><a href="/terms/" class="footer-link" data-astro-cid-sz7xmlte>Terms of Use</a></li> <li data-astro-cid-sz7xmlte><a href="/cookies/" class="footer-link" data-astro-cid-sz7xmlte>Cookie Policy</a></li> <li data-astro-cid-sz7xmlte> <button class="footer-link footer-cookie-btn" onclick="if(window.acceptrics&&typeof window.acceptrics.showBanner==='function'){window.acceptrics.showBanner();}else if(window.Acceptrics&&typeof window.Acceptrics.openPreferences==='function'){window.Acceptrics.openPreferences();}else if(window.AnyservCookieConsent&&typeof window.AnyservCookieConsent.openPreferences==='function'){window.AnyservCookieConsent.openPreferences();}" data-astro-cid-sz7xmlte> Cookie Settings </button> </li> </ul> </div> </nav> </div> <!-- Bottom bar --> <div class="footer-bottom" data-astro-cid-sz7xmlte> <p class="footer-copy" data-astro-cid-sz7xmlte>© 2026 AnyServ. Digital precision for everyone.</p> </div> </div>   </footer> <!-- Subtle noise texture for premium feel --> <div class="noise-overlay" aria-hidden="true"></div> <!-- AnyServ Dropdown System --> 
926<script src="/_astro/DropdownSystem.DTPHm4RA.js" defer></script>
926 <!-- PWA: registerSW.js z vite-plugin-pwa (injectRegister: script) – bez data: URI (CSP) --> 
926<script src="/registerSW.js" defer></script>
926  </body> </html> 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.