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
4 changes: 2 additions & 2 deletions app/ip-lens/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,7 @@ const sampleFields = [
["IP version", "IPv4"],
["ASN", "AS64500 · sample"],
["Provider", "Example Network"],
["Reverse DNS", "host-42.example.test"],
["Network range", "203.0.113.0/24"],
["Provider domain", "example.test"],
["Approximate region", "Example region"]
] as const;

Expand Down Expand Up @@ -149,6 +148,7 @@ export default function IPLensPage() {
<p>Free IP lookups go to {ipLensConfig.providers.freeIPData}; personal-key lookups go to {ipLensConfig.providers.personalIPData}. DNS queries go only to the selected {ipLensConfig.providers.dns} resolver, while registration queries go directly to the {ipLensConfig.providers.registration}.</p>
<div className="privacy-links">
<Link href="/ip-lens/privacy">Read the IP Lens privacy notice <span aria-hidden="true">→</span></Link>
<Link href="/ip-lens/terms">Read the IP Lens terms <span aria-hidden="true">→</span></Link>
<Link href="/ip-lens/support">Contact support <span aria-hidden="true">→</span></Link>
</div>
</div>
Expand Down
6 changes: 3 additions & 3 deletions app/ip-lens/privacy/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export default function IPLensPrivacyPage() {
<p>IP Lens is a native iPhone networking utility. It has no accounts, advertising, analytics, tracking, attribution SDK, developer-operated backend, or recurring subscription.</p>

<h2>How Lookups Work</h2>
<p>IP Lens does not operate its own lookup backend. Automatic current-IP lookups and addresses you enter are sent directly from your device to the selected IP data provider. Other network utilities disclose their destination before sending a request.</p>
<p>IP Lens does not operate its own lookup backend. After onboarding, an automatic current-IP lookup is enabled by default and can be disabled in Settings. It never runs behind the onboarding screens. Current-IP lookups and addresses you enter are sent directly from your device to the selected IP data provider. Other network utilities disclose their destination before sending a request.</p>

<h2>Third-Party Providers</h2>
<ul>
Expand Down Expand Up @@ -58,8 +58,8 @@ export default function IPLensPrivacyPage() {
<p>For privacy questions, email <a href={`mailto:${ipLensConfig.supportEmail}`}>{ipLensConfig.supportEmail}</a> or visit <Link href="/ip-lens/support">IP Lens support</Link>.</p>

<h2>Last Updated</h2>
<p>July 18, 2026</p>
<p><Link href="/ip-lens">Back to IP Lens</Link></p>
<p>July 19, 2026</p>
<p><Link href="/ip-lens">Back to IP Lens</Link> · <Link href="/ip-lens/terms">Read the terms</Link></p>
</article>
</main>
</SiteChrome>
Expand Down
2 changes: 1 addition & 1 deletion app/ip-lens/support/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export default function IPLensSupportPage() {

<h2>Contact</h2>
<p><a className="secondary-button inline-support-button" href={`mailto:${ipLensConfig.supportEmail}?subject=IP%20Lens%20Support`}>Email IP Lens support</a></p>
<p><Link href="/ip-lens">Back to IP Lens</Link> · <Link href="/ip-lens/privacy">Read the privacy notice</Link></p>
<p><Link href="/ip-lens">Back to IP Lens</Link> · <Link href="/ip-lens/privacy">Read the privacy notice</Link> · <Link href="/ip-lens/terms">Read the terms</Link></p>
</article>
</main>
</SiteChrome>
Expand Down
53 changes: 53 additions & 0 deletions app/ip-lens/terms/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import type { Metadata } from "next";
import Link from "next/link";
import { SiteChrome } from "@/components/landing/SiteChrome";
import { ipLensConfig } from "@/data/ip-lens";

export const metadata: Metadata = {
title: "IP Lens Terms",
description: "Terms of use for the IP Lens iPhone app.",
alternates: { canonical: "/ip-lens/terms" },
openGraph: {
title: "IP Lens Terms | buffer.lol",
description: "Terms for using IP Lens and its third-party network data.",
url: "/ip-lens/terms",
type: "website"
}
};

export default function IPLensTermsPage() {
return (
<SiteChrome navHomePrefix="/">
<main className="simple-main" id="main-content">
<article className="simple-page product-legal-page">
<nav className="breadcrumbs" aria-label="Breadcrumb"><Link href="/">Home</Link><span>/</span><Link href="/ip-lens">IP Lens</Link><span>/</span><strong>Terms</strong></nav>
<span className="section-kicker">IP Lens / Terms</span>
<h1>Informational network tools.</h1>
<p>IP Lens provides IP geolocation, DNS, registration, subnet, and related network information for practical informational use. Results may be incomplete, delayed, or inaccurate and are not a guarantee of identity, ownership, location, availability, or security.</p>

<h2>Important Limitations</h2>
<p>Do not use IP Lens results for emergency response, safety-critical decisions, legal conclusions, employment, housing, credit, eligibility, surveillance, or access-control decisions. Approximate IP geolocation does not identify the precise location of a device or person.</p>

<h2>Acceptable Use</h2>
<p>Use IP Lens only for addresses, domains, and networks you are authorized to inspect. Do not use it to disrupt services, evade controls, automate abusive traffic, or violate provider, registry, resolver, or network acceptable-use limits.</p>

<h2>Third-Party Services</h2>
<p>Online lookups depend on third-party providers, resolvers, and registries disclosed in the app. Those services have their own terms and privacy policies and may change, rate-limit, reject, or stop serving requests. IP Lens does not promise uninterrupted availability.</p>

<h2>Purchase</h2>
<p>IP Lens is planned as a one-time paid App Store download. It requires no IP Lens account or recurring subscription. App Store purchasing and refunds are handled under Apple&apos;s applicable terms.</p>

<h2>No Warranty</h2>
<p>IP Lens is provided as-is to the extent permitted by applicable law, without warranties that its output will be accurate, complete, current, or suitable for a particular purpose.</p>

<h2>Contact</h2>
<p>For questions about these terms, email <a href={`mailto:${ipLensConfig.supportEmail}`}>{ipLensConfig.supportEmail}</a>.</p>

<h2>Last Updated</h2>
<p>July 19, 2026</p>
<p><Link href="/ip-lens">Back to IP Lens</Link> · <Link href="/ip-lens/privacy">Read the privacy notice</Link></p>
</article>
</main>
</SiteChrome>
);
}
5 changes: 2 additions & 3 deletions app/privacy/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,12 @@ export default function PrivacyPage() {
<ul>
<li>Input used in browser-ready developer tools is processed on your device and is not submitted to buffer.lol.</li>
<li>Server-backed network and IP tools process the target you submit, the request metadata needed to complete the check, and short-lived diagnostic results.</li>
<li>Private analytics may collect page paths, referrers, session identifiers, outbound clicks, browser metadata, user agent, IP-derived signals, and timing information. Server-backed and browser latency/stability checks may also record the tool slug, outcome, and duration, but not the submitted target or browser-local tool input.</li>
<li>Your email address and message content if you contact us.</li>
<li>Basic technical metadata collected by the hosting platform, such as request time, IP address, user agent, and abuse-prevention signals.</li>
</ul>

<h2>How We Use It</h2>
<p>We use submitted data and private analytics to provide requested tools, respond to messages, prevent abuse, understand product usage, and improve reliability. We do not sell contact emails.</p>
<p>We use submitted data to provide requested tools, respond to messages, prevent abuse, and improve reliability. We do not sell contact emails.</p>

<h2>Tool Data</h2>
<p>JSON, Base64, hashing, UUID, timestamp, URL parsing, JWT decoding, regex testing, CIDR calculations, and user-agent utilities run locally in your browser. Ping and packet-loss/stability tests send repeated HTTPS requests from your browser to buffer.lol. Server-backed DNS, HTTP, TLS, uptime, port, RDAP, redirect, robots/sitemap, public IP, geolocation, ASN, and traceroute tools send the target to buffer.lol only to produce the requested result. Traceroute checks are handled by a restricted diagnostics worker.</p>
Expand All @@ -39,7 +38,7 @@ export default function PrivacyPage() {
<p>For privacy questions, removal requests, or product questions, email <a href="mailto:hello@buffer.lol">hello@buffer.lol</a>.</p>

<h2>Last Updated</h2>
<p>July 10, 2026</p>
<p>July 19, 2026</p>
<p><Link href="/">Back to buffer.lol</Link></p>
</article>
</main>
Expand Down
2 changes: 1 addition & 1 deletion app/sitemap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ const baseUrl = "https://buffer.lol";

export default function sitemap(): MetadataRoute.Sitemap {
const lastModified = new Date();
const staticRoutes = ["", "/privacy", "/terms", "/ip-lens", "/ip-lens/privacy", "/ip-lens/support"];
const staticRoutes = ["", "/privacy", "/terms", "/ip-lens", "/ip-lens/privacy", "/ip-lens/terms", "/ip-lens/support"];

return [
...staticRoutes.map((route) => ({
Expand Down
2 changes: 1 addition & 1 deletion components/landing/SiteChrome.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ export function SiteFooter() {
<footer className="site-footer">
<div className="footer-brand"><Link className="brand" href="/"><span className="brand-prompt">&gt;_</span>buffer<span>.lol</span></Link><p>Fast, simple networking tools.</p></div>
<div className="footer-links"><Link href="/#networking">Networking</Link><Link href="/#ip">IP tools</Link><Link href="/#developer">Developer</Link><Link href="/ip-lens">IP Lens</Link>{docsUrl && <a href={docsUrl}>Docs</a>}</div>
<div className="footer-links"><Link href="/ip-lens/privacy">IP Lens privacy</Link><Link href="/ip-lens/support">Support &amp; feature requests</Link>{ipLensConfig.appStoreUrl && <a href={ipLensConfig.appStoreUrl} rel="noreferrer" target="_blank">App Store ↗</a>}<a href="https://github.com/1337lean/buffer.lol" rel="noreferrer" target="_blank">GitHub ↗</a><Link href="/privacy">Site privacy</Link><Link href="/terms">Terms</Link></div>
<div className="footer-links"><Link href="/ip-lens/privacy">IP Lens privacy</Link><Link href="/ip-lens/terms">IP Lens terms</Link><Link href="/ip-lens/support">Support &amp; feature requests</Link>{ipLensConfig.appStoreUrl && <a href={ipLensConfig.appStoreUrl} rel="noreferrer" target="_blank">App Store ↗</a>}<a href="https://github.com/1337lean/buffer.lol" rel="noreferrer" target="_blank">GitHub ↗</a><Link href="/privacy">Site privacy</Link><Link href="/terms">Site terms</Link></div>
<div className="footer-bottom"><span>© 2026 buffer.lol</span><span>Built for the curious.</span></div>
</footer>
);
Expand Down
Loading