Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/app/guides/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,7 @@ const guideContent: Record<
],
relatedTools: [
{ href: "/tools/tap-tempo", label: "Tap Tempo Tool" },
{ href: "/tools/bpm-detector", label: "BPM Counter Using Your Microphone" },
{ href: "/tools/bpm-delay", label: "BPM Delay Calculator" },
{ href: "/bpm", label: "BPM Reference" },
],
Expand Down Expand Up @@ -907,6 +908,10 @@ const guideContent: Record<
],
relatedTools: [
{ href: "/tools/tap-tempo", label: "Tap Tempo - Find Track BPM" },
{
href: "/tools/bpm-detector",
label: "Detect BPM Through Your Microphone",
},
{ href: "/tools/bpm-transition", label: "BPM Transition Helper" },
{ href: "/tools/camelot", label: "Camelot Wheel - Harmonic Mixing" },
],
Expand Down
39 changes: 39 additions & 0 deletions src/app/tools/bpm-detector/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,45 @@ export default function BpmDetectorPage() {
the tempo from your taps - it works on anything you can hear, even
through headphones.
</p>
<h2>Find the BPM of a Song Playing on a Speaker</h2>
<p>
Point the device at the speaker, start listening, and the tempo
appears within a few bars. Nothing needs to be connected to the
sound system - the detector works from the sound in the air, so it
reads a track coming out of a club PA, a monitor, a laptop, or a
Bluetooth speaker just as well as one playing on headphones held
close to the mic.
</p>

<h2>BPM Counter Using Your Phone&apos;s Microphone</h2>
<p>
The page runs in the mobile browser, so your phone becomes a
pocket <strong>BPM counter</strong> with nothing to install. Open it
on the dancefloor, in a record shop, or in a rehearsal room, hold the
phone toward the source, and read the tempo. Because the analysis is
on-device, it keeps working with no signal.
</p>

<h2>Detect BPM from Vinyl, Radio, or a Live DJ Set</h2>
<p>
Sources with no file to analyse are exactly where microphone
detection earns its place. A record on a turntable, a radio
broadcast, a support DJ&apos;s set you want to mix into - none of
them exist as an audio file you can drop into an analyzer, but all of
them are audible in the room. Pitch-adjusted vinyl works too: the
detector reads the tempo actually playing, not the tempo printed on
the label.
</p>

<h2>Find the Tempo of a Live Band or Drummer</h2>
<p>
Live performance drifts, and the detector follows it. Point it at a
drummer to check whether the band is rushing, confirm a click-track
tempo in rehearsal, or capture the tempo of a live take you want to
rebuild in the studio later. A clear, steady backbeat gives the most
stable reading.
</p>

<h2>Privacy</h2>
<p>
The audio stream never leaves your device. The detector converts
Expand Down
53 changes: 16 additions & 37 deletions src/app/tools/key-analyzer/page.tsx
Original file line number Diff line number Diff line change
@@ -1,41 +1,29 @@
import type { Metadata } from "next"
import { KeyAnalyzerTool } from "@/components/tools/key-analyzer-tool"
import { Breadcrumbs } from "@/components/layout/breadcrumbs"
import { generateToolSchema, generateFaqSchema, generateBreadcrumbSchema, socialMetadata } from "@/lib/seo"
import { generateToolSchema, generateFaqSchema, socialMetadata } from "@/lib/seo"

export const metadata: Metadata = {
title: "Free Song Key & BPM Analyzer - No Upload Needed",
title: "Song Key Finder - Detect the Key of Any MP3, No Upload",
description:
"Find the musical key, Camelot code, and BPM of any song free - no upload, no software, no account. Drop in an MP3, WAV, or FLAC and it's analysed privately in your browser.",
"Free online key finder: drop in an MP3, WAV, or FLAC and read its musical key and Camelot code in seconds. Nothing is uploaded - the file is analysed privately in your browser.",
keywords: [
"online key finder",
"song bpm and key analyzer",
"bpm and key finder",
"find key of song online",
"key finder no upload",
"key finder without uploading",
"find song key without software",
"free key finder no download",
"private key finder",
"audio key detector",
"song key analyzer",
"free key detection",
"what key is this song",
"song key finder",
"key detector",
"mp3 key finder",
"camelot key finder",
"musical key detector",
"key finder DJ",
"harmonic mixing key finder",
"key finder no upload",
],
alternates: {
canonical: "https://tunetapper.com/tools/key-analyzer",
},
...socialMetadata({
title: "Free Song Key & BPM Analyzer - No Upload Needed | TuneTapper",
title: "Song Key Finder - Detect the Key of Any MP3, No Upload | TuneTapper",
description:
"Find the key, Camelot code, and BPM of any song free - no upload, no software, no account. Analysed privately in your browser.",
"Drop in an MP3 and read its musical key and Camelot code in seconds. Nothing is uploaded - analysed privately in your browser.",
path: "/tools/key-analyzer",
image: "/og/key-analyzer.png",
imageAlt: "Key & BPM Analyzer - TuneTapper",
imageAlt: "Song Key Finder - TuneTapper",
}),
}

Expand Down Expand Up @@ -74,18 +62,12 @@ const faqs = [

export default function KeyAnalyzerPage() {
const toolSchema = generateToolSchema({
name: "Free Online Key Finder",
name: "Song Key Finder",
description:
"Detect the musical key and Camelot notation of any audio file. Runs entirely in your browser.",
"Detect the musical key and Camelot notation of any audio file. Runs entirely in your browser - nothing is uploaded.",
url: "/tools/key-analyzer",
})

const breadcrumbItems = [
{ name: "Home", path: "/" },
{ name: "Tools", path: "/tools" },
{ name: "Key Finder", path: "/tools/key-analyzer" },
]

return (
<>
<script
Expand All @@ -96,15 +78,12 @@ export default function KeyAnalyzerPage() {
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(generateFaqSchema(faqs)) }}
/>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(generateBreadcrumbSchema(breadcrumbItems)),
}}
/>
<div className="mx-auto max-w-4xl px-4 pt-6">
<Breadcrumbs
items={[{ name: "Key Finder", path: "/tools/key-analyzer" }]}
items={[
{ name: "Tools", path: "/tools" },
{ name: "Key Finder", path: "/tools/key-analyzer" },
]}
/>
</div>
<KeyAnalyzerTool faqs={faqs} />
Expand Down
4 changes: 3 additions & 1 deletion src/components/tools/bpm-detector-tool.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,9 @@ export function BpmDetectorTool() {
<div className="mx-auto max-w-2xl px-4 py-8 lg:py-12">
{/* Header */}
<div className="mb-8 text-center">
<h1 className="text-3xl font-bold lg:text-4xl">BPM Detector</h1>
<h1 className="text-3xl font-bold lg:text-4xl">
BPM Detector &ndash; Find Tempo With Your Microphone
</h1>
<p className="mt-3 text-lg text-[var(--muted-foreground)]">
Play music out loud and let your microphone find the tempo -
nothing is recorded or uploaded.
Expand Down
47 changes: 33 additions & 14 deletions src/components/tools/key-analyzer-tool.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -171,11 +171,11 @@ export function KeyAnalyzerTool({
{/* Header */}
<div className="mb-8">
<h1 className="text-3xl font-bold lg:text-4xl">
Free Online Key &amp; BPM Analyzer
Free Online Key Finder
</h1>
<p className="mt-3 text-lg text-[var(--muted-foreground)]">
Drop in any track to detect its musical key, Camelot code, and BPM -
100% in your browser, no upload to any server.
Drop in any track to detect its musical key and Camelot code -
100% in your browser, with nothing uploaded to any server.
</p>
</div>

Expand Down Expand Up @@ -418,7 +418,29 @@ export function KeyAnalyzerTool({

{/* SEO prose + FAQ */}
<section className="mt-4 prose prose-neutral dark:prose-invert max-w-none">
<h2>Find the Key of Any Song - Free, Private, Instant</h2>
<h2>Find a Song&apos;s Key Without Uploading Anything</h2>
<p>
Unlike most online key finders, this tool never uploads your audio.
The file is decoded and analysed entirely on your device through the
browser&apos;s Web Audio API, so nothing is sent to a server, stored,
or shared. That means you can <strong>find the key of a song without
software</strong>, without creating an account, and without waiting on
an upload - just drop a file in and read the result. It works on
desktop and mobile, with no download required, making it a fast,
private alternative to apps like Mixed In Key when you only need to
check a track or two.
</p>
<h2>MP3 Key Finder</h2>
<p>
Drop in an MP3, WAV, FLAC, AAC, OGG, or M4A file and the key finder
reads its musical key straight from the audio. Because decoding happens
in the browser, an <strong>MP3 key finder</strong> that runs this way
needs no plugin, no desktop install, and no upload step - the file
never leaves the folder you dragged it from. Large files work too; only
the first 90 seconds are analysed, which is ample for a reliable
reading.
</p>
<h2>Song Key Detector: How It Works</h2>
<p>
TuneTapper&apos;s key finder analyzes your audio file directly in your
browser using the Web Audio API and the{" "}
Expand Down Expand Up @@ -450,17 +472,14 @@ export function KeyAnalyzerTool({
Atonal, heavily chromatic, or extremely percussive tracks may produce
lower confidence scores.
</p>
<h3>Find a Song&apos;s Key Without Uploading or Installing Anything</h3>
<h3>Looking for the Tempo Instead?</h3>
<p>
Unlike most online key finders, this tool never uploads your audio.
The file is decoded and analysed entirely on your device through the
browser&apos;s Web Audio API, so nothing is sent to a server, stored,
or shared. That means you can <strong>find the key of a song without
software</strong>, without creating an account, and without waiting on
an upload - just drop a file in and read the result. It works on
desktop and mobile, with no download required, making it a fast,
private alternative to apps like Mixed In Key when you only need to
check a track or two.
This page reports a BPM alongside the key, but if tempo is what you
actually came for there are better-suited tools. The{" "}
<Link href="/tools/bpm-detector">BPM detector</Link> finds the tempo of
music playing in the room through your microphone, and the{" "}
<Link href="/tools/tap-tempo">tap BPM counter</Link> measures it from
your own taps.
</p>

{faqs && faqs.length > 0 && (
Expand Down