diff --git a/v3/src/components/CookieConsentConfig.ts b/v3/src/components/CookieConsentConfig.ts
index a73c21bb..d0895ec3 100644
--- a/v3/src/components/CookieConsentConfig.ts
+++ b/v3/src/components/CookieConsentConfig.ts
@@ -14,6 +14,7 @@ import zhTW from './cookie/zh-TW.json';
declare global {
interface Window {
loadGoogleAnalytics?: () => void;
+ disableGoogleAnalytics?: () => void;
}
}
@@ -39,6 +40,14 @@ export const config: CookieConsentConfig = {
},
functionality: {},
analytics: {
+ // reloadPage fires only when this category goes from accepted to rejected, so
+ // withdrawing consent reloads into a page where the stored rejection means gtag
+ // is never loaded at all. That is what makes withdrawal deterministic rather than
+ // dependent on switching off a tag that is already running.
+ autoClear: {
+ cookies: [{ name: /^_ga/ }],
+ reloadPage: true,
+ },
services: {
ga4: {
label:
@@ -48,9 +57,12 @@ export const config: CookieConsentConfig = {
onAccept: () => {
window.loadGoogleAnalytics?.();
},
- // Nothing to undo: rejecting means the loader was never called, and the
- // cookies matched below are erased by the library itself.
- onReject: () => {},
+ // Rejecting is not only a first refusal: the visitor may have accepted
+ // earlier, in which case gtag is already running and keeps sending (and
+ // re-setting _ga) unless it is switched off explicitly.
+ onReject: () => {
+ window.disableGoogleAnalytics?.();
+ },
cookies: [
{
name: /^_ga/,
diff --git a/v3/src/components/common/Analytics.astro b/v3/src/components/common/Analytics.astro
index c4d8ba02..3371cdbc 100644
--- a/v3/src/components/common/Analytics.astro
+++ b/v3/src/components/common/Analytics.astro
@@ -3,12 +3,23 @@ import { ANALYTICS } from 'astrowind:config';
const gaId = ANALYTICS?.vendors?.googleAnalytics?.id ? String(ANALYTICS.vendors.googleAnalytics.id) : '';
-// Nothing is loaded here. This only defines the loader; the analytics service in
-// CookieConsentConfig calls it once the visitor accepts that category, so no Google
-// script runs and no _ga cookie is set before consent is given.
+// Nothing is loaded here. This only defines the loader and its counterpart; the
+// analytics service in CookieConsentConfig calls them when the visitor accepts or
+// rejects that category, so no Google script runs and no _ga cookie is set before
+// consent is given, and neither survives consent being withdrawn afterwards.
const loader = `
window.loadGoogleAnalytics = function () {
- if (window.__gaLoaded) return;
+ // Clear the opt-out flag first: on a re-accept the script is already in the page,
+ // so lifting the flag is the only thing that lets it send again.
+ window['ga-disable-${gaId}'] = false;
+
+ if (window.__gaLoaded) {
+ // Re-accepting without a reload: the script is still in the page but measurement was
+ // switched off, so resume it and re-run config -- otherwise this view is never counted.
+ window.gtag && window.gtag('consent', 'update', { analytics_storage: 'granted' });
+ window.gtag && window.gtag('config', '${gaId}');
+ return;
+ }
window.__gaLoaded = true;
var s = document.createElement('script');
@@ -23,6 +34,16 @@ window.loadGoogleAnalytics = function () {
window.gtag('js', new Date());
window.gtag('config', '${gaId}');
};
+
+window.disableGoogleAnalytics = function () {
+ // Google's documented opt-out property. Google specifies it must be set before any
+ // gtag() call: that holds from the next page load on, where the stored rejection means
+ // the loader never runs and gtag never loads at all. Setting it here also stops the
+ // gtag already injected in this page view -- it re-checks the property before each hit
+ // -- but that ordering is not part of Google's documented contract.
+ window['ga-disable-${gaId}'] = true;
+ window.gtag && window.gtag('consent', 'update', { analytics_storage: 'denied' });
+};
`;
---
diff --git a/v3/src/pages/ar/pricing.astro b/v3/src/pages/ar/pricing.astro
index 5d46ae1e..f471699b 100644
--- a/v3/src/pages/ar/pricing.astro
+++ b/v3/src/pages/ar/pricing.astro
@@ -51,7 +51,7 @@ const faqRawItems = [
{
title: 'ما هي شروطكم؟',
description:
- 'يرجى التحقق من هذه الشروط',
+ 'يرجى التحقق من هذه الشروط',
},
{
title: 'هل تم دمج web client في RustDesk Server Pro؟',
diff --git a/v3/src/pages/de/pricing.astro b/v3/src/pages/de/pricing.astro
index 89da3583..30da534f 100644
--- a/v3/src/pages/de/pricing.astro
+++ b/v3/src/pages/de/pricing.astro
@@ -52,7 +52,7 @@ const faqRawItems = [
{
title: 'Was sind Ihre Geschäftsbedingungen?',
description:
- 'Bitte überprüfen Sie diese Bedingungen',
+ 'Bitte überprüfen Sie diese Bedingungen',
},
{
title: 'Ist der web client in RustDesk Server Pro integriert?',
diff --git a/v3/src/pages/es/pricing.astro b/v3/src/pages/es/pricing.astro
index b6675f7f..c982b52d 100644
--- a/v3/src/pages/es/pricing.astro
+++ b/v3/src/pages/es/pricing.astro
@@ -52,7 +52,7 @@ const faqRawItems = [
{
title: '¿Cuáles son sus términos?',
description:
- 'Por favor, revise estos términos',
+ 'Por favor, revise estos términos',
},
{
title: '¿Está integrado el web client en RustDesk Server Pro?',
diff --git a/v3/src/pages/fr/pricing.astro b/v3/src/pages/fr/pricing.astro
index 759ebd05..1e43d667 100644
--- a/v3/src/pages/fr/pricing.astro
+++ b/v3/src/pages/fr/pricing.astro
@@ -52,7 +52,7 @@ const faqRawItems = [
{
title: 'Quelles sont vos conditions ?',
description:
- 'Veuillez consulter ces conditions',
+ 'Veuillez consulter ces conditions',
},
{
title: 'Le web client est-il intégré à RustDesk Server Pro ?',
diff --git a/v3/src/pages/it/pricing.astro b/v3/src/pages/it/pricing.astro
index 41c49f1c..4fa0df9d 100644
--- a/v3/src/pages/it/pricing.astro
+++ b/v3/src/pages/it/pricing.astro
@@ -52,7 +52,7 @@ const faqRawItems = [
{
title: 'Quali sono i vostri termini?',
description:
- 'Per favore controlla questi termini',
+ 'Per favore controlla questi termini',
},
{
title: 'Il web client è integrato in RustDesk Server Pro?',
diff --git a/v3/src/pages/ja/pricing.astro b/v3/src/pages/ja/pricing.astro
index f942e4ca..67aa6825 100644
--- a/v3/src/pages/ja/pricing.astro
+++ b/v3/src/pages/ja/pricing.astro
@@ -52,7 +52,7 @@ const faqRawItems = [
{
title: '利用規約はどのようなものですか?',
description:
- 'この利用規約をご確認ください',
+ 'この利用規約をご確認ください',
},
{
title: 'web client は RustDesk Server Pro に統合されていますか?',
diff --git a/v3/src/pages/ko/pricing.astro b/v3/src/pages/ko/pricing.astro
index 9ef58401..f4f15059 100644
--- a/v3/src/pages/ko/pricing.astro
+++ b/v3/src/pages/ko/pricing.astro
@@ -50,7 +50,7 @@ const faqRawItems = [
{
title: '약관은 무엇인가요?',
description:
- '이 약관을 확인해 주세요.',
+ '이 약관을 확인해 주세요.',
},
{
title: 'web client가 RustDesk Server Pro에 통합되어 있나요?',
diff --git a/v3/src/pages/pricing.astro b/v3/src/pages/pricing.astro
index 76445dbb..1627ba5f 100644
--- a/v3/src/pages/pricing.astro
+++ b/v3/src/pages/pricing.astro
@@ -52,7 +52,7 @@ const faqRawItems = [
{
title: "What's your terms?",
description:
- 'Please check this terms',
+ 'Please check this terms',
},
{
title: 'Is web client integrated into RustDesk Server Pro?',
diff --git a/v3/src/pages/privacy.md b/v3/src/pages/privacy.md
index 35946af6..c1b58056 100644
--- a/v3/src/pages/privacy.md
+++ b/v3/src/pages/privacy.md
@@ -4,7 +4,7 @@ description: 'Read the RustDesk privacy policy covering website usage, cookies,
layout: '~/layouts/MarkdownLayout.astro'
---
-**Effective date: 15 September 2026**
+**Effective date: 16 September 2026**
This Privacy Policy (hereinafter the “**Policy**”) governs the terms and conditions under which Purslane Tech Pte. Ltd. (hereinafter “**us**” or “**we**”), processes personal data in connection with the activities and services concerning the operation of the website rustdesk.com and other websites or social media profiles run and managed by us (hereinafter the “**Websites**”), and in connection with the RustDesk software and the services we operate for it.
@@ -46,7 +46,7 @@ We may process your personal data for the following legal grounds and for the fo
### a. Provision and improvement of and support for our Websites
We process various information about your online activity, e.g. the time of access to our Websites, the time spent on our websites, conversions (i.e. completed activity on our Websites), etc., for the purposes of technical support and improvement of our Websites as well as monitoring of functionalities thereof (for details regarding the extent of the data being processed see Section 3 (c) and (d) of this Policy).
-For this purpose of personal data processing, we process your personal data under the lawful ground of legitimate interest (operation of the Websites, statistical purposes and data security).
+Where we carry out that processing through the analytics cookies described in Section 3 (c), we do so on the lawful ground of your consent, and we stop if you withdraw it. Where we process your personal data in order to operate and secure the Websites without those cookies, for example in the server logs needed to deliver the pages you request and to detect abuse, we do so under the lawful ground of legitimate interest (operation of the Websites and data security).
### b. Processing of the personal data of the visitors to the Websites
If you publish any personal data on our Websites, we may process such personal data to the extent published for the purpose of responding to your post. Usually, we process following personal data categories on our Websites: your name, surname and any personal data which you upload on the Websites or which we receive via personal messages.
@@ -62,12 +62,14 @@ To provide you with the RustDesk software application and to constantly improve
We process the personal data acquired via the RustDesk software under lawful grounds of performance of a contract (performance of RustDesk software license agreement concluded between us and yourself including customer support) and our legitimate interest (RustDesk software development).
## 4. Who we share your personal data with
-We do not sell your personal data. We share it only with service providers that process it on our behalf, and only to the extent they need it in order to provide their service to us. The categories of those providers are:
+We do not sell your personal data. We share it only with service providers, and only to the extent described in this Section. The categories of those providers are:
- **analytics providers**, for the website usage statistics described in Section 3 (a) and (c) — currently Google, through Google Analytics 4;
- **payment providers**, for processing your payment when you buy a license — currently Stripe. Your card details are collected directly by the payment provider; we do not receive or store them;
- **hosting, infrastructure and communication providers**, for the operation of the Websites, of the public ID and relay servers, and of our support and email channels.
+Most of these providers act as our processors and handle your personal data only on our instructions. Some also act as controllers in their own right, for their own purposes, which we do not determine and which their own privacy notices govern. In particular, Stripe processes payment data as an independent controller in order to prevent fraud, to meet its own legal and regulatory obligations, and to improve its services; its [Privacy Policy](https://stripe.com/privacy) and [Data Processing Agreement](https://stripe.com/legal/dpa) describe that processing.
+
We may also disclose personal data where the law requires us to, where it is necessary to establish, exercise or defend a legal claim, or where it is necessary to protect the rights and safety of another person.
## 5. Transfers of your personal data to other countries
diff --git a/v3/src/pages/pt/pricing.astro b/v3/src/pages/pt/pricing.astro
index ad727122..dec1db0f 100644
--- a/v3/src/pages/pt/pricing.astro
+++ b/v3/src/pages/pt/pricing.astro
@@ -52,7 +52,7 @@ const faqRawItems = [
{
title: 'Quais são os seus termos?',
description:
- 'Por favor, verifique estes termos',
+ 'Por favor, verifique estes termos',
},
{
title: 'O web client está integrado ao RustDesk Server Pro?',
diff --git a/v3/src/pages/terms.md b/v3/src/pages/terms.md
index 2a61a701..6231ac7e 100644
--- a/v3/src/pages/terms.md
+++ b/v3/src/pages/terms.md
@@ -4,7 +4,7 @@ description: 'Review the RustDesk software terms and conditions, including licen
layout: '~/layouts/MarkdownLayout.astro'
---
-**Effective date: 15 September 2026**
+**Effective date: 16 September 2026**
This Agreement (“Agreement”) is a legal agreement between you (either an individual or an entity) and Purslane Tech Pte. Ltd. (“Company”) and applies to your use of the Software. By accessing or using the Software, you agree to be bound by the terms and conditions of this Agreement. If you do not agree to the terms and conditions of this Agreement, do not use the Software.
@@ -26,8 +26,8 @@ You shall not, and shall not allow any third party to:
- remove, alter, or obscure any copyright, trademark, or other proprietary rights notices from the Software
- use the Software in any manner that violates any applicable laws or regulations
- use the Software to access a device or system without the informed consent of the person entitled to give it
-- use the Software to deceive, defraud, or impersonate any person, or to induce any person to grant access to their device, including by presenting yourself as technical support, as a security or virus warning, or as a refund, payment, or law enforcement matter
-- use the Software to obtain, transmit, or use another person’s credentials, payment details, or personal data without their consent
+- use the Software to deceive, defraud, or impersonate any person, or to obtain access to a device by deception, false statement, or impersonation, including by falsely presenting yourself as technical support, or by presenting a false security or virus warning or a false refund, payment, or law enforcement matter
+- use the Software to obtain, transmit, or use another person’s credentials, payment details, or personal data without the consent of that person or another lawful basis for doing so under the law that applies to you
- place an undue burden on the services Company operates, including through automated or bulk use, or otherwise disrupt or tamper with those services or access them in a way that exceeds your authorization
## 3. Ownership
@@ -36,74 +36,84 @@ The Software and all intellectual property rights in and to the Software, includ
## 4. Support and Maintenance
Company may provide support and maintenance for the Software at its sole discretion. The terms and conditions of such support and maintenance will be separately agreed upon by the parties.
-## 5. Termination
+## 5. Product-Specific Terms
+This Section sets out the terms that apply to a particular part of the Software. Where a term in this Section differs from the rest of this Agreement, the term in this Section applies to that part. Everything else in this Agreement applies to the Software as a whole.
+
+### 5.1 RustDesk Server Pro
+Licenses are issued per server, for a term of one (1) year starting on the date of purchase, unless Company agrees a longer prepaid term with you. The fee for the term is payable in advance, and licenses do not renew automatically.
+
+Company issues you a license key. You may use it on one server at a time, and you may not share it.
+
+A custom client you build with RustDesk Server Pro does not carry a license to the Software, a right to Company’s services, or any right to use Company’s name or logos.
+
+## 6. Termination
This Agreement is effective until terminated.
-Company may terminate this Agreement immediately if you are in material breach of it. Where your breach is a failure to pay, Company will first send you a reminder giving you a period in which to pay, and may terminate if you have not paid within that period. Where your breach is of Section 2 and your continued use presents a risk of harm to another person or to the services Company operates, Company may also suspend your access immediately, for as long as that risk persists. Company may also terminate this Agreement as provided in Section 21.
+Company may terminate this Agreement immediately if you are in material breach of it. Where your breach is a failure to pay, Company will first send you a reminder giving you a period in which to pay, and may terminate if you have not paid within that period. Where your breach is of Section 2 and your continued use presents a risk of harm to another person or to the services Company operates, Company may also suspend your access immediately, for as long as that risk persists. Company may also terminate this Agreement as provided in Section 22.
-You may terminate this Agreement at any time by ceasing to use the Software. Where you hold a paid subscription, this does not entitle you to end that subscription before the end of the period you have paid for, or to a refund of the fees for that period.
+You may terminate this Agreement at any time by ceasing to use the Software. Where you hold a paid license, this does not entitle you to end that license before the end of the term you have paid for, or to a refund of the fees for that term.
If Company terminates this Agreement other than for your breach, Company will refund the part of any fee you have prepaid for a period after termination.
Upon termination you must stop using the Software and destroy all copies of it in your possession.
-## 6. Disclaimer of Warranties
+## 7. Disclaimer of Warranties
The Software is provided “as is” and, to the maximum extent permitted by law, without warranty of any kind. Company and its licensors hereby disclaim all warranties, express or implied, including but not limited to the implied warranties of merchantability, fitness for a particular purpose, and non-infringement. Company does not warrant that the Software will meet your requirements or that the operation of the Software will be uninterrupted or error-free. Nothing in this Section excludes or limits any warranty or other right that applicable law does not allow to be excluded or limited, including any statutory right you have as a consumer.
-## 7. Limitation of Liability
+## 8. Limitation of Liability
To the maximum extent permitted by law, Company and its licensors shall not be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or any other pecuniary loss) arising out of the use or inability to use the Software, even if Company has been advised of the possibility of such damages. Where liability cannot be excluded, the total aggregate liability of Company and its licensors under or in connection with this Agreement shall not exceed the amount you paid Company for the Software in the twelve months before the event giving rise to the claim. Nothing in this Agreement excludes or limits liability for death or personal injury caused by negligence, for fraud or fraudulent misrepresentation, or for any other liability that applicable law does not allow to be excluded or limited.
-## 8. Indemnification
+## 9. Indemnification
You shall indemnify and hold Company and its affiliates, officers, agents, and employees harmless from any claim or demand, including reasonable attorneys’ fees, made by any third party due to or arising out of your use of the Software, your violation of this Agreement, or your violation of any rights of another.
-## 9. Governing Law
+## 10. Governing Law
This Agreement shall be governed by and construed in accordance with the laws of Singapore, without giving effect to any principles of conflicts of law. The courts of Singapore shall have exclusive jurisdiction over any dispute arising out of or in connection with this Agreement, save that Company is also entitled to bring proceedings against you before the courts of the place where you are domiciled or have your place of business, or before any other court having jurisdiction under applicable law. If you use the Software as a consumer, nothing in this Section deprives you of the protection of the mandatory law of the country in which you are habitually resident, or of any right you have to bring proceedings in the courts of that country.
-## 10. Entire Agreement
+## 11. Entire Agreement
This Agreement constitutes the entire agreement between you and Company and supersedes all prior or contemporaneous communications and proposals, whether oral or written.
-## 11. Waiver
+## 12. Waiver
The failure of either party to exercise any right provided for herein shall not be deemed a waiver of any right hereunder.
-## 12. Severability
+## 13. Severability
If any provision of this Agreement is found to be invalid or unenforceable, the remaining provisions shall remain in full force and effect.
-## 13. No Assignment
+## 14. No Assignment
You may not assign or transfer this Agreement or any rights or obligations hereunder without the prior written consent of the Company. Company may assign this Agreement, in whole or in part, to an affiliate or in connection with a merger, acquisition, corporate reorganization, or sale of all or substantially all of its assets.
-## 14. Force Majeure
+## 15. Force Majeure
Company shall not be liable for any delay or failure to perform resulting from causes outside its reasonable control, including, but not limited to, acts of God, war, terrorism, strikes, shortages of labor or materials, and governmental actions.
-## 15. Relationship of the Parties
+## 16. Relationship of the Parties
This Agreement does not create a partnership, joint venture, or agency relationship between you and Company.
-## 16. No Third-Party Beneficiaries
+## 17. No Third-Party Beneficiaries
This Agreement is for the benefit of the parties hereto and their successors and assigns, and is not for the benefit of, nor may any provision hereof be enforced by, any other person.
-## 17. Headings
+## 18. Headings
The headings in this Agreement are for convenience only and shall not affect the interpretation of this Agreement.
-## 18. Counterparts
+## 19. Counterparts
This Agreement may be executed in counterparts, each of which shall be deemed an original, but all of which together shall constitute one and the same instrument.
-## 19. Survival
+## 20. Survival
The provisions of this Agreement that by their nature should survive termination shall survive termination, including, but not limited to, provisions regarding ownership, warranty disclaimers, indemnification, and limitations of liability.
-## 20. Disclaimer of Usage
-RustDesk, being Remote Control Software, possesses the capability to facilitate a wide range of activities, both legitimate and otherwise. It is imperative to acknowledge that RustDesk is a tool and does not inherently endorse or condone any specific use. As such, the Company explicitly disclaims any responsibility or liability for any damages, losses, or consequences that may arise from the use of our software. Users are advised to utilize RustDesk responsibly and in compliance with applicable laws and ethical standards. Please refer to the terms and conditions outlined in Sections 7 (Limitation of Liability) and 8 (Indemnification) for further details regarding the extent of our liability protections and user obligations.
+## 21. Disclaimer of Usage
+RustDesk, being Remote Control Software, possesses the capability to facilitate a wide range of activities, both legitimate and otherwise. It is imperative to acknowledge that RustDesk is a tool and does not inherently endorse or condone any specific use. As such, the Company explicitly disclaims any responsibility or liability for any damages, losses, or consequences that may arise from the use of our software. Users are advised to utilize RustDesk responsibly and in compliance with applicable laws and ethical standards. Please refer to the terms and conditions outlined in Sections 8 (Limitation of Liability) and 9 (Indemnification) for further details regarding the extent of our liability protections and user obligations.
-## 21. Changes to this Agreement
+## 22. Changes to this Agreement
Company may amend this Agreement, including in order to reflect changes in technology, in legal or regulatory requirements, or in the Software; to extend or improve the Software; to make changes that are predominantly to your benefit; or to prevent misuse, harm or security concerns. The effective date at the top of this page shows when the current version took effect, and Company will post any amended version on this page. Every version of this Agreement, and the date on which it changed, is publicly recorded in the version history of the repository from which this page is published, currently at https://github.com/rustdesk/doc.rustdesk.com.
-Where you hold a paid subscription and Company holds contact details for you, Company may also notify you at those details, stating in the notification the effect of not objecting. If Company notifies you in that way and you do not object in writing within thirty (30) days, the amendment is treated as accepted. If you do object, this Agreement continues for you on its existing terms, and Company may terminate it on thirty (30) days’ written notice, in which case Company will refund the part of any fee you have prepaid for a period after termination.
+Where you hold a paid license and Company holds contact details for you, Company may also notify you at those details, stating in the notification the effect of not objecting. If Company notifies you in that way and you do not object in writing within thirty (30) days, the amendment is treated as accepted. If you do object, this Agreement continues for you on its existing terms, and Company may terminate it on thirty (30) days’ written notice, in which case Company will refund the part of any fee you have prepaid for a period after termination.
-Where you do not hold a paid subscription, the amended version applies to you when you next access or use the Software after it is posted. If you do not agree to it, you must stop using the Software.
+Where you do not hold a paid license, the amended version applies to you when you next access or use the Software after it is posted. If you do not agree to it, you must stop using the Software.
-## 22. Privacy
+## 23. Privacy
Company’s [Privacy Policy](/privacy) describes how Company processes personal data in connection with the Software, and forms part of this Agreement.
-## 23. Time Limit for Claims
+## 24. Time Limit for Claims
To the extent permitted by applicable law, you may not bring a claim under or in connection with this Agreement more than two (2) years after the cause of action accrued.
-## 24. Individual Claims
+## 25. Individual Claims
To the extent permitted by applicable law, you agree to bring any claim against Company in your individual capacity, and not as a plaintiff or class member in any purported class, collective, or representative proceeding. Nothing in this Section affects any right that applicable law does not allow to be waived, including any right to participate in a representative action that such law confers on you.
diff --git a/v3/src/pages/zh-cn/pricing.astro b/v3/src/pages/zh-cn/pricing.astro
index 7f4eb491..12a1b79b 100644
--- a/v3/src/pages/zh-cn/pricing.astro
+++ b/v3/src/pages/zh-cn/pricing.astro
@@ -50,7 +50,7 @@ const faqRawItems = [
{
title: '您的条款是什么?',
description:
- '请查看这个条款',
+ '请查看这个条款',
},
{
title: 'web client 是否已集成到 RustDesk Server Pro?',
diff --git a/v3/src/pages/zh-tw/pricing.astro b/v3/src/pages/zh-tw/pricing.astro
index 801cf9e1..46e97d90 100644
--- a/v3/src/pages/zh-tw/pricing.astro
+++ b/v3/src/pages/zh-tw/pricing.astro
@@ -48,7 +48,7 @@ const faqRawItems = [
{
title: '您的條款是什麼?',
description:
- '請查看這個條款',
+ '請查看這個條款',
},
{
title: 'web client 是否已整合到 RustDesk Server Pro?',