> ## Documentation Index
> Fetch the complete documentation index at: https://usefulai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Useful AI

> Independent, hands-on rankings of the best AI tools, models, and courses, manually reviewed across 60+ categories to find what actually works.

export const ScrollFix = () => {
  React.useEffect(() => {
    window.scrollTo(0, 0);
  }, []);
  return null;
};

export const openSearch = () => {
  if (typeof document !== "undefined") document.getElementById("search-bar-entry")?.click();
};

<ScrollFix />

<div className="mx-auto max-w-5xl px-6 pb-24 pt-14 sm:pt-20">
  <div className="text-center">
    <h1 className="text-[2.1rem] font-bold tracking-tight text-zinc-950 dark:text-white sm:text-[2.9rem]">AI, Made Useful</h1>
    <p className="mx-auto mt-4 max-w-[600px] text-[1.1rem] leading-relaxed text-zinc-600 dark:text-zinc-300">Independent, hands-on rankings across tools, models, and courses.</p>

    <button type="button" onClick={openSearch} aria-label="Search" className="group mx-auto mt-8 flex w-full max-w-xl items-center gap-2.5 rounded-xl border border-zinc-300 bg-white px-4 py-3.5 text-left transition-colors hover:border-zinc-400 dark:border-white/15 dark:bg-white/[0.05] dark:hover:border-white/30">
      <Icon icon="magnifying-glass" size={16} color="currentColor" />

      <span className="text-[15px] text-zinc-400 dark:text-zinc-500">Search 2,000+ tools, models, and courses…</span>
    </button>

    <div className="mt-4 flex flex-wrap justify-center gap-2">
      <a href="/tools/ai-coding" className="not-prose rounded-full border border-zinc-200 bg-white px-3 py-1.5 text-[13px] font-medium text-zinc-600 no-underline transition-colors hover:border-zinc-300 hover:text-zinc-950 dark:border-white/10 dark:bg-white/[0.03] dark:text-zinc-300 dark:hover:text-white">Coding agents</a>
      <a href="/tools/ai-chatbots" className="not-prose rounded-full border border-zinc-200 bg-white px-3 py-1.5 text-[13px] font-medium text-zinc-600 no-underline transition-colors hover:border-zinc-300 hover:text-zinc-950 dark:border-white/10 dark:bg-white/[0.03] dark:text-zinc-300 dark:hover:text-white">Chatbots</a>
      <a href="/tools/ai-image-generators" className="not-prose rounded-full border border-zinc-200 bg-white px-3 py-1.5 text-[13px] font-medium text-zinc-600 no-underline transition-colors hover:border-zinc-300 hover:text-zinc-950 dark:border-white/10 dark:bg-white/[0.03] dark:text-zinc-300 dark:hover:text-white">Image generators</a>
      <a href="/models/llms" className="not-prose rounded-full border border-zinc-200 bg-white px-3 py-1.5 text-[13px] font-medium text-zinc-600 no-underline transition-colors hover:border-zinc-300 hover:text-zinc-950 dark:border-white/10 dark:bg-white/[0.03] dark:text-zinc-300 dark:hover:text-white">LLMs</a>
      <a href="/models/transcription" className="not-prose rounded-full border border-zinc-200 bg-white px-3 py-1.5 text-[13px] font-medium text-zinc-600 no-underline transition-colors hover:border-zinc-300 hover:text-zinc-950 dark:border-white/10 dark:bg-white/[0.03] dark:text-zinc-300 dark:hover:text-white">Transcription</a>
    </div>
  </div>

  <div className="mb-3 mt-14 flex items-baseline justify-between">
    <span className="text-xs font-semibold uppercase tracking-wide text-zinc-400 dark:text-zinc-500">Popular categories</span>
    <a href="/tools" className="text-[13px] font-medium text-zinc-500 no-underline hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-white">All categories →</a>
  </div>

  <div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(228px, 1fr))", gap: "12px" }}>
    <a href="/tools/ai-coding" className="not-prose group flex min-w-0 flex-col rounded-xl border border-zinc-200 bg-white p-4 no-underline transition-colors hover:border-zinc-300 dark:border-white/10 dark:bg-white/[0.03] dark:hover:border-white/20">
      <span className="block text-[15px] font-semibold leading-6 text-zinc-950 dark:text-white">Coding Agents</span>
      <span className="mt-1 block flex-1 text-[13px] leading-5 text-zinc-500 dark:text-zinc-400">Terminal and IDE agents that plan, edit, and run code.</span>

      <span className="mt-3.5 flex items-center justify-between gap-3 border-t border-zinc-100 pt-3 dark:border-white/5">
        <span className="flex items-center"><span className="flex items-center"><img src="https://mintcdn.com/usefulai/C5xOaAf4Os-Vu41o/images/icons/48/claude.com.png?fit=max&auto=format&n=C5xOaAf4Os-Vu41o&q=85&s=e324f28e31e44610382fa8cbd78b8468" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/claude.com.png" /><img src="https://mintcdn.com/usefulai/VO-39uGyUn-FtcaD/images/icons/48/cursor.com.png?fit=max&auto=format&n=VO-39uGyUn-FtcaD&q=85&s=3472188040350aa6fc703d0d14923751" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/cursor.com.png" /><img src="https://mintcdn.com/usefulai/C5xOaAf4Os-Vu41o/images/icons/48/openai.com.png?fit=max&auto=format&n=C5xOaAf4Os-Vu41o&q=85&s=21ac965dc6ee5751127e6d435043629b" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/openai.com.png" /><img src="https://mintcdn.com/usefulai/82PG1Up2qz4DPkMj/images/icons/48/github.com.png?fit=max&auto=format&n=82PG1Up2qz4DPkMj&q=85&s=428c02db7ed3f5dc78be2e665f3142c1" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/github.com.png" /></span><span className="ml-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md border-2 border-white bg-zinc-100 text-[10px] font-semibold tabular-nums text-zinc-600 dark:border-zinc-900 dark:bg-white/10 dark:text-zinc-300">+3</span></span>
        <span className="flex shrink-0 items-center gap-1 text-[13px] font-medium text-zinc-500 transition-colors group-hover:text-zinc-900 dark:text-zinc-400 dark:group-hover:text-white">View <Icon icon="chevron-right" size={10} /></span>
      </span>
    </a>

    <a href="/tools/ai-meeting-assistants" className="not-prose group flex min-w-0 flex-col rounded-xl border border-zinc-200 bg-white p-4 no-underline transition-colors hover:border-zinc-300 dark:border-white/10 dark:bg-white/[0.03] dark:hover:border-white/20">
      <span className="block text-[15px] font-semibold leading-6 text-zinc-950 dark:text-white">Meeting Assistants</span>
      <span className="mt-1 block flex-1 text-[13px] leading-5 text-zinc-500 dark:text-zinc-400">Record, transcribe, and summarize your meetings.</span>

      <span className="mt-3.5 flex items-center justify-between gap-3 border-t border-zinc-100 pt-3 dark:border-white/5">
        <span className="flex items-center"><span className="flex items-center"><img src="https://mintcdn.com/usefulai/DapqcZBWDcIyQCBz/images/icons/48/granola.ai.png?fit=max&auto=format&n=DapqcZBWDcIyQCBz&q=85&s=943aa2915f437e6330140ec97893af16" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/granola.ai.png" /><img src="https://mintcdn.com/usefulai/DapqcZBWDcIyQCBz/images/icons/48/fathom.ai.png?fit=max&auto=format&n=DapqcZBWDcIyQCBz&q=85&s=b96f755470c032bc29e1790cac705031" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/fathom.ai.png" /><img src="https://mintcdn.com/usefulai/DapqcZBWDcIyQCBz/images/icons/48/fireflies.ai.png?fit=max&auto=format&n=DapqcZBWDcIyQCBz&q=85&s=223322e4574261bc4997df2a66c0fd02" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/fireflies.ai.png" /><img src="https://mintcdn.com/usefulai/DapqcZBWDcIyQCBz/images/icons/48/otter.ai.png?fit=max&auto=format&n=DapqcZBWDcIyQCBz&q=85&s=fa405d7b535ecbac722810938513c113" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/otter.ai.png" /></span><span className="ml-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md border-2 border-white bg-zinc-100 text-[10px] font-semibold tabular-nums text-zinc-600 dark:border-zinc-900 dark:bg-white/10 dark:text-zinc-300">+3</span></span>
        <span className="flex shrink-0 items-center gap-1 text-[13px] font-medium text-zinc-500 transition-colors group-hover:text-zinc-900 dark:text-zinc-400 dark:group-hover:text-white">View <Icon icon="chevron-right" size={10} /></span>
      </span>
    </a>

    <a href="/tools/ai-search-engines" className="not-prose group flex min-w-0 flex-col rounded-xl border border-zinc-200 bg-white p-4 no-underline transition-colors hover:border-zinc-300 dark:border-white/10 dark:bg-white/[0.03] dark:hover:border-white/20">
      <span className="block text-[15px] font-semibold leading-6 text-zinc-950 dark:text-white">Search Engines</span>
      <span className="mt-1 block flex-1 text-[13px] leading-5 text-zinc-500 dark:text-zinc-400">Answer engines that cite sources instead of listing links.</span>

      <span className="mt-3.5 flex items-center justify-between gap-3 border-t border-zinc-100 pt-3 dark:border-white/5">
        <span className="flex items-center"><span className="flex items-center"><img src="https://mintcdn.com/usefulai/5lUOF1e9a_45-p1Q/images/icons/48/perplexity.ai.png?fit=max&auto=format&n=5lUOF1e9a_45-p1Q&q=85&s=b17be2dbf13c92d6efa746f8a369c0c0" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/perplexity.ai.png" /><img src="https://mintcdn.com/usefulai/C5xOaAf4Os-Vu41o/images/icons/48/chatgpt.com.png?fit=max&auto=format&n=C5xOaAf4Os-Vu41o&q=85&s=5e7f3de17cf2c7fc46864bfdcb97b95e" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/chatgpt.com.png" /><img src="https://mintcdn.com/usefulai/82PG1Up2qz4DPkMj/images/icons/48/google.com.png?fit=max&auto=format&n=82PG1Up2qz4DPkMj&q=85&s=d44aa6f953cf72e889c25d7f615750e5" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/google.com.png" /><img src="https://mintcdn.com/usefulai/DapqcZBWDcIyQCBz/images/icons/48/claude.ai.png?fit=max&auto=format&n=DapqcZBWDcIyQCBz&q=85&s=fb415c7174f1e2e8f24101e1c7275b99" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/claude.ai.png" /></span><span className="ml-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md border-2 border-white bg-zinc-100 text-[10px] font-semibold tabular-nums text-zinc-600 dark:border-zinc-900 dark:bg-white/10 dark:text-zinc-300">+3</span></span>
        <span className="flex shrink-0 items-center gap-1 text-[13px] font-medium text-zinc-500 transition-colors group-hover:text-zinc-900 dark:text-zinc-400 dark:group-hover:text-white">View <Icon icon="chevron-right" size={10} /></span>
      </span>
    </a>

    <a href="/tools/ai-image-generators" className="not-prose group flex min-w-0 flex-col rounded-xl border border-zinc-200 bg-white p-4 no-underline transition-colors hover:border-zinc-300 dark:border-white/10 dark:bg-white/[0.03] dark:hover:border-white/20">
      <span className="block text-[15px] font-semibold leading-6 text-zinc-950 dark:text-white">Image Generators</span>
      <span className="mt-1 block flex-1 text-[13px] leading-5 text-zinc-500 dark:text-zinc-400">Turn text prompts into images, art, and product visuals.</span>

      <span className="mt-3.5 flex items-center justify-between gap-3 border-t border-zinc-100 pt-3 dark:border-white/5">
        <span className="flex items-center"><span className="flex items-center"><img src="https://mintcdn.com/usefulai/nqtrSJ8E-k7bZERT/images/icons/48/midjourney.com.png?fit=max&auto=format&n=nqtrSJ8E-k7bZERT&q=85&s=401bfc9b6d2139ac85e292f1516d04f3" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/midjourney.com.png" /><img src="https://mintcdn.com/usefulai/C5xOaAf4Os-Vu41o/images/icons/48/openai.com.png?fit=max&auto=format&n=C5xOaAf4Os-Vu41o&q=85&s=21ac965dc6ee5751127e6d435043629b" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/openai.com.png" /><img src="https://mintcdn.com/usefulai/nqtrSJ8E-k7bZERT/images/icons/48/ideogram.ai.png?fit=max&auto=format&n=nqtrSJ8E-k7bZERT&q=85&s=dd2df19cdfd92b4007f4383a4b30bf1d" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/ideogram.ai.png" /><img src="https://mintcdn.com/usefulai/nqtrSJ8E-k7bZERT/images/icons/48/adobe.com.png?fit=max&auto=format&n=nqtrSJ8E-k7bZERT&q=85&s=8fb660cce1cc354b486fa6e04ca788cb" alt="" noZoom className="h-6 w-6 shrink-0 rounded-md border-2 border-white bg-white object-contain dark:border-zinc-900 dark:bg-zinc-900" width="48" height="48" data-path="images/icons/48/adobe.com.png" /></span><span className="ml-0.5 inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-md border-2 border-white bg-zinc-100 text-[10px] font-semibold tabular-nums text-zinc-600 dark:border-zinc-900 dark:bg-white/10 dark:text-zinc-300">+4</span></span>
        <span className="flex shrink-0 items-center gap-1 text-[13px] font-medium text-zinc-500 transition-colors group-hover:text-zinc-900 dark:text-zinc-400 dark:group-hover:text-white">View <Icon icon="chevron-right" size={10} /></span>
      </span>
    </a>
  </div>

  <div className="mt-12 flex flex-wrap items-center justify-center gap-x-6 gap-y-2 border-t border-zinc-100 pt-8 text-[14px] dark:border-white/5">
    <span className="text-[13px] font-semibold uppercase tracking-wide text-zinc-400 dark:text-zinc-500">Explore</span>
    <a href="/tools" className="font-medium text-zinc-600 no-underline hover:text-zinc-950 dark:text-zinc-300 dark:hover:text-white">Tools</a>
    <a href="/plugins" className="font-medium text-zinc-600 no-underline hover:text-zinc-950 dark:text-zinc-300 dark:hover:text-white">Plugins</a>
    <a href="/models" className="font-medium text-zinc-600 no-underline hover:text-zinc-950 dark:text-zinc-300 dark:hover:text-white">Models</a>
    <a href="/courses" className="font-medium text-zinc-600 no-underline hover:text-zinc-950 dark:text-zinc-300 dark:hover:text-white">Courses</a>
    <a href="/feeds" className="font-medium text-zinc-600 no-underline hover:text-zinc-950 dark:text-zinc-300 dark:hover:text-white">Feeds</a>
    <a href="/books" className="font-medium text-zinc-600 no-underline hover:text-zinc-950 dark:text-zinc-300 dark:hover:text-white">Books</a>
  </div>
</div>
