We haven’t changed the price of an annual subscription since August 2022. However, due to rising costs, we need to adjust the price to sustain development and continue providing quality services to our customers. Therefore, starting August 28, 2024, we will increase the price of an annual subscription license from $40.00 to $48.00. Volume license prices will also be adjusted accordingly.
As previously announced, we will stop selling lifetime licenses on August 28, 2024. Additionally, the renewal price after the first year will increase from the current 50% of the first-year price to 75%, effective on August 28, 2024. If you plan to use EmEditor Professional long-term, you can save by purchasing lifetime licenses now. Alternatively, if you have subscription licenses, you can renew your subscription at the current price before August 28, 2024, without changing the expiration date.
As the developer of EmEditor, I urgently need to address a growing concern in our community: the sale of pirated or invalid licenses. It has been noted that such licenses are being offered at significantly discounted prices on various online platforms, including auction sites. Please be aware that if you encounter an EmEditor license at a price that seems too good to be true, it is almost certainly from an illegal source. These offers are not only illegal but also pose significant risks to users. I strongly urge you to refrain from purchasing these licenses.
Why Avoid Illegitimate Licenses:
Short-term Functionality, Long-term Failure: Initially, these unauthorized licenses might seem to work. However, they are programmed to eventually display a message stating, “You might be a victim of software piracy. Please purchase a legitimate software license from EmEditor home page.” This indicates that the software will cease to function properly.
Registration and Activation Issues: Legitimate EmEditor licenses require successful registration in the Emurasoft Customer Center. Pirated licenses fail this process, leading to continuous warning messages and an inability to update the software.
Security Concerns: Purchasing and using these illegitimate licenses exposes you to significant security risks. Often, pirated software sellers try to steal your personal and payment information.
Auction Site Purchases: Please be particularly cautious with licenses sold on auction sites. Many of these are not legitimate, and we do not authorize ownership changes of licenses. Buying from these sources puts you at risk of acquiring a non-transferable, invalid license. EmEditor licenses are non-transferable, with the exception of legal name changes.
The Benefits of Genuine Licenses:
Full functionality and reliability of the software.
Access to regular updates and customer support.
Compliance with legal software usage and enhanced data security.
How to Ensure Your License is Genuine:
Purchase your EmEditor license directly from our official website or through authorized resellers. If you have any doubts about the authenticity of a license, please contact us for verification before completing your purchase.
Your Action Matters:
By choosing genuine licenses, you’re not only ensuring a seamless and secure experience but also supporting the ongoing development and improvement of EmEditor.
We take this issue very seriously and are actively working to combat the sale of these illegal licenses. Your awareness and cooperation are vital in this effort.
Thank you for being a vital part of the EmEditor community.
On version 24.0.0, we introduced a registration validation system to improve the already existing registration system. This validation system is able to track the number of devices a customer has registered EmEditor on.
This blog serves to be transparent about our motivations and to document how the validation system works. If we update the validation system in the future, we will also update this page.
Stripe update
On May 2024, this document was updated to include the Stripe payment flow. The ability to pay on Stripe is a planned feature.
Motivation
In the past, there was no way for us to detect a user who is sharing their license with ten other people, or those who are using their license on more devices than allowed by the EULA (end-user license agreement). We would like customers to purchase enough licenses to follow the terms of the license. This would ensure fairness among customers who have purchased multiple licenses.
Requirements
This section lists the requirements we had for the validation system.
Functional
The validation system should loosely enforce the device limit clause of the license. It should not sacrifice customer satisfaction, so we should not make this limit a surprise.
Registration is run once upon submission of the Register Product dialog box or any of the other registration flows. Validation is run once every time the EmEditor is opened.
Registration requires EmEditor to be able to connect to support.emeditor.com via HTTP. Validation does not require internet connection.
Users should be able to use an offline license that allows the app to register and validate without connecting to our server. In case a user experiences errors with normal registration, an offline license would allow an alternative way to register.
Privacy rights of users should be maintained. The collection of personal information will be opt-in.
It should fit into the existing registration system and not make it a new way to register. Current users should be able to register without having to learn new steps.
Uninstalling the app should unregister the device.
Users can log in to the Emurasoft Customer Center to view devices so that devices can be unregistered outside of the app.
Customers who have purchased from non-2Checkout resellers will have to register the product and create a customer center account. This is because there will be no way for them to see their devices online without an account.
The system should be tested in the background in version 23. It should be fully in effect from version 24.
Technical
The system should be simple so that it is easier to maintain.
A machine can be identified with a machine ID.
We determined that the registry value HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid is a suitable ID.
EmEditor Portable can be installed on a USB, with its settings stored in the USB. The USB can be used on many machines, and the validation system would detect different machine IDs. Therefore if the app detects that it is a portable version running on a USB, registration does not occur.
EmEditor can be installed per-user on a multi-user machine. We must combine all EmEditor installations on the same machine as one unit to the device count.
There should be a way to override the limit for a given registration key, just in case.
A signed token containing the device info should be stored on the user’s device. This associates the current device with the device record stored in the database.
The system should be able to integrate a floating license system if we decide to in the future.
If the device limit is reached, a notification will appear. The user can still use the app even if the device limit is exceeded.
If the user bought the app from a non-2Checkout reseller and has not registered the product, a notification will ask the user to register the product.
Device table
The device table is stored in our database and records all devices that were registered. Note that a History record is associated with a purchase and it is where a registration key is stored. A Device record is defined in Go as follows.
The Label field may contain personal information. The Label device field in the Register Product dialog box defaults to {computer name} {user name}. The personal information inside the label field is not necessary for the basic functionality of the app. Therefore, we made the label field opt-in to stick to our policy of privacy by default.
Local Device token
A LocalDevice token is stored locally on the user’s device in the form of a JWT (JSON Web Token). It associates the current device with the database Device record. It also allows EmEditor to do some validation even if it is offline. The token payload is defined as follows.
type LocalDevice struct {
DeviceID string
MachineID uuid.UUID
// StripeSubscriptionID is empty if this device is not associated with a subscription.
StripeSubscriptionID string
}
The expiration date of the token is set to the expiration date of the registration key.
For per-user installations, the token is stored in the registry as LocalDeviceToken in Computer\HKEY_CURRENT_USER\Software\EmSoft\EmEditor v3\Common.
Device count
This section describes how we determine how many devices you can register. This is subject to change if we change the terms of the EULA.
To calculate the number of units towards the device limit for a specific registration key, we use the following MySQL query.
SELECT count(DISTINCT MachineID) as deviceCount
FROM devices
WHERE HistoryID=? AND Unregistered=FALSE
For Stripe subscriptions, the following query is used.
SELECT count(DISTINCT MachineID) as deviceCount
FROM devices
WHERE StripeSubscriptionID=? AND Unregistered=FALSE
For a given history ID, we first get all devices that are still registered. Then we count the number of unique machines. If there are multiple devices with the same MachineID, they are likely multiple per-user installations on the same machine.
The EULA allows the licensee to install EmEditor to up to two devices per license. If EmEditor is for personal use and not installed on corporate computers, the licensee can install EmEditor to five devices per license.
Offline registration
An offline license allows a user to register without an internet connection. Registration only requires a license file.
A customer can request an offline license file. The customer must include their registration key or Stripe order ID in the request. We will reply to the customer’s email address within a few business days with the license file. The license file is a text file that contains a JWT token with the following payload.
type LicenseFile struct {
LicenseID string
UserID int
FullName string
Email string
// Is nil if not a Stripe subscription
StripeSubscriptionID *string
// Is nil if not a registration key
HistoryID *int
}
The offline license token is saved to the registry entry OfflineLicense.
There are three ways that the device limit is enforced and illegal sharing of the license file is prevented. 1) When EmEditor can access the internet, validation is performed. 2) We will only send the license file via email instead of downloading from our website. 3) The Registration Information dialog will display the license owner’s full name and email.
OfflineLicense table
Usage of offline licenses is tracked using the OfflineLicense table. It includes the machine ID to track how many machines used the license and the Revoked flag to allow us to revoke a license.
type OfflineLicense struct {
LicenseID string
UserID int
MachineID uuid.UUID
StripeSubscriptionID sql.NullString
HistoryID sql.NullInt64
// Revoked indicates that this license cannot be used
Revoked bool
}
Registration Information dialog box
Registration Information displays information about the user’s registration. This is useful for knowing what your registration status is, and to diagnose any issues with validation. It also allows the user to edit the device information and to unregister.
The dialog runs validation and shows whether or not it was successful.
Registration process
There are four scenarios where registration may happen.
Most users will register through the Register Product dialog box.
Register using the MSI installer.
Offline registration using the command line.
If you unregistered a device, then opened EmEditor on that device, the device will be registered automatically.
There are two online registration flows, depending on if a registration key is used (RegisterDevice()) or a Stripe subscription is used (RegisterDeviceSubscription()). The third registration flow is for offline registration (StoreOfflineLicenseAndValidate()).
In this section, “Client” refers to the local EmEditor app on the user’s machine. “Server” is our backend server and database.
If the user signed in, the server tries to find a valid Stripe subscription that has not exceeded the device limit. If there is a usable Stripe subscription, RegisterDeviceSubscription() is called. If such Stripe subscription does not exist, it will find a valid registration key that has not exceeded the device limit. RegisterDevice() is used for registration keys.
Registration with registration key (RegisterDevice())
If a device token already exists, the client sends an unregister request to the server. The token and registration key is deleted from the registry.
The client sends a registration request to the server, which includes the registration key, machine ID, label, and installation type.
The server queries deviceCount (defined in previous section) to determine if the registration key can be used to register the device
A Device record is created.
The client receives the device ID. Using the device ID, the client requests a local device token.
The server creates and responds with the local device token. The expiration date of the token is set to the registration key expiration date. The client writes the token to local storage.
Registration with Stripe subscription (RegisterDeviceSubscription())
If a device token already exists, the client sends an unregister request to the server. The token and registration key is deleted from the registry.
The client sends a registration request to the server, which includes the Stripe subscription, machine ID, label, and installation type.
The server queries deviceCount (defined in previous section) to determine if the Stripe subscription can be used to register the device.
A Device record is created.
The client receives the device ID. Using the device ID, the client requests a local device token.
The server creates and responds with the local device token. The expiration is set to one month in the future if the subscription status is active. If the subscription status is canceled, the expiration date is set to the end date of the current billing period. The client writes the token to local storage.
Registration with offline license (StoreOfflineLicenseAndValidate())
The user registers an offline license by saving the license file to the filesystem, then running the command line option
/ol "licenseFilePath"
This list outlines the offline registration process.
Delete the registration key, local device token, and offline license token from the registry.
Read the license file and save it to the registry.
Run ValidateDevice().
Validation process (ValidateDevice())
Validation occurs every time the app is opened.
If local device token does not exist in the registry, call ValidateOfflineLicense().
The token’s signature is validated. The actual machine ID is compared with the machine ID in the token. The result is ignored if the app is running on a removable drive.
If validation fails due to expected reasons such as a mismatched machine ID, the reason is outputted as status text, and the device token is deleted.
For other unexpected errors such as network error, validation succeeds.
A random number generator determines if validation should stop here. This is to reduce the load of requests to our server.
The validation function sleeps the thread for a certain duration. This is again to reduce the request load, as we assume that macros and other automated use cases that rapidly start and close the app would only run it for a short duration.
The client requests the Device data for the stored device ID.
If device.Unregistered == true, the client attempts to register the device.
The device.ValidationDate is updated.
If the token was issued before current time – 7 days, a new token is created to replace the old token.
Offline license validation process (ValidateOfflineLicense())
Offline license validation occurs if the registry does not contain the local device token. If an unexpected error occurs, validation succeeds. This means that if the user is offline, validation will still succeed.
If the offline license token does not exist, validation succeeds. One case where this may happen is if registration previously failed due to a network error but the registration key was valid. This allows EmEditor to be used in such case.
Read and validate the token.
Request the server to validate the offline license with the token and machine ID.
The server validates the token.
For Stripe subscriptions, the server checks that the subscription exists.
If an OfflineLicense entry for the license ID does not exist, it is created with the token data.
If the entry exists and license.Revoked == true, it returns StatusLicenseRevoked. Otherwise validation succeeds.
Uninstallation
When you uninstall the desktop version of EmEditor, your device will automatically be unregistered. This makes it easy to install to another machine without having to unregister the previous device manually. Because the portable and Store App versions do not have an uninstallation process, they will not unregister automatically when you remove those apps. Therefore if you have a portable or Store App and you are no longer using it on your device, you must manually unregister it from the Registered Devices page in Customer Center.
Devices will be unregistered when version 24 is released
On the day that version 24 is released, all devices will be unregistered. In version 23, uninstallation did not unregister devices, so there are many devices that should be unregistered. After we unregister all devices, the devices that are in use will automatically register again.
Support
If you have any questions or feedback about the validation system, feel free to send us a message.
https://www.emeditor.com/wp-content/uploads/2024/02/registration-interface.png630742Makoto Emurahttps://www.emeditor.com/wp-content/uploads/2022/12/logo-minified-margins-1.svgMakoto Emura2024-02-20 13:34:582024-06-24 15:15:24New Validation System Explained
Unlike “perpetual” licenses sold by other companies, our lifetime licenses include the right to receive future updates indefinitely. It is difficult to predict the future, but we would like to develop and support EmEditor for a long time. Our family and employees depend on the sales of EmEditor, which need to last for future generations. Therefore, we will end sales of lifetime licenses on August 28th, 2024. We will not sell lifetime licenses after August 28th, 2024. If you plan to use EmEditor Professional for a long time, you could save on future costs by purchasing lifetime licenses now. We will also raise the price of a lifetime license on August 30th, 2023 from the current $260 to $380 for a single license. The volume lifetime license prices will also be adjusted accordingly.
Annual Subscription
We will raise the price after the first year from the current 50% of the first year price to 75% on August 28th, 2024. If you have subscription licenses, you can renew your subscription at the current price before August 28th, 2024 without changing the expiration date. If you have subscribed to licenses through our website, you may purchase a single-year renewal if your previous purchase was made more than 30 days ago. If you would like to purchase multi-year renewals, please contact us and we will send you a link to do so. If you purchased a subscription through a reseller, please contact your reseller to purchase multi-year renewals.
We have not changed the price of an annual subscription since we started annual subscription licensing. However, our expense cost continues to grow, and we need to adjust the price so that we can continue development and providing services to our customers. Therefore, we are going to increase the price of licenses. Taking effect on August 1, 2022, we are changing the first year price of an annual subscription license from US$39.99 to US$40.00, and a lifetime license from US$252 to US$260. The volume license prices will also be adjusted accordingly.
We have not changed the price of a lifetime license since 2019. However, our expense cost continues to grow, and we need to adjust the price so that we can continue development and providing services to our customers. Therefore, we are going to increase the price of a lifetime license. Taking effect on April 1, 2022, we are changing the price of a lifetime license from US$179.99 to US$252. The volume license prices of lifetime licenses will also be adjusted accordingly. However, annual subscriptions will not be affected.
If an error message similar to “The paging file is too small for this operation to complete” or “Your computer is low on memory” appears while opening a very large file, you will need to increase the physical or virtual memory. This new page explains how to increase virtual memory on your system.
https://www.emeditor.com/wp-content/uploads/2016/10/emeditor150.png150150Yutaka Emurahttps://www.emeditor.com/wp-content/uploads/2022/12/logo-minified-margins-1.svgYutaka Emura2020-05-01 14:00:212020-05-13 09:57:41FAQ – The digital signature of a program files could not be verified
Since the introduction of lifetime licenses in 2012, we have not changed the price of a lifetime license. However, our expense cost continues to grow, and we need to adjust the price so that we can continue development and providing services to our customers. Therefore, we are going to increase the price of a lifetime license. Taking effect on April 1, 2019, we are changing the price of a lifetime license from US$149.99 to US$179.99. The volume license prices of lifetime licenses will also be changed. However, annual subscriptions will not be affected.
We will continue development of EmEditor and providing support to our customers.
Our online payment partner Avangate will be rebranded as 2Checkout on June 19th, 2018. If you have received emails from Avangate regarding your subscriptions, you will receive them from 2Checkout (@2checkout.com) from now on. Please whitelist emails from @2checkout.com as well as @emurasoft.com in order to receive important emails in the future. Your subscription contracts will remain as they are now. Your former Avangate myAccount page will be updated to https://www.2co.com/, but our Emurasoft Customer Center will remain the same as https://support.emeditor.com/. We thank you in advance for your time.
https://www.emeditor.com/wp-content/uploads/2018/06/2checkout-logo.png118800Vicky Fanghttps://www.emeditor.com/wp-content/uploads/2022/12/logo-minified-margins-1.svgVicky Fang2018-06-18 14:24:472018-06-18 15:34:30Our Partner Avangate Rebranded as 2Checkout
We may request cookies to be set on your device. We use cookies to let us know when you visit our websites, how you interact with us, to enrich your user experience, and to customize your relationship with our website.
Click on the different category headings to find out more. You can also change some of your preferences. Note that blocking some types of cookies may impact your experience on our websites and the services we are able to offer.
Essential Website Cookies
These cookies are strictly necessary to provide you with services available through our website and to use some of its features.
Because these cookies are strictly necessary to deliver the website, refusing them will have impact how our site functions. You always can block or delete cookies by changing your browser settings and force blocking all cookies on this website. But this will always prompt you to accept/refuse cookies when revisiting our site.
We fully respect if you want to refuse cookies but to avoid asking you again and again kindly allow us to store a cookie for that. You are free to opt out any time or opt in for other cookies to get a better experience. If you refuse cookies we will remove all set cookies in our domain.
We provide you with a list of stored cookies on your computer in our domain so you can check what we stored. Due to security reasons we are not able to show or modify cookies from other domains. You can check these in your browser security settings.
Other external services
We also use different external services like Google Webfonts, Google Maps, and external Video providers. Since these providers may collect personal data like your IP address we allow you to block them here. Please be aware that this might heavily reduce the functionality and appearance of our site. Changes will take effect once you reload the page.
Google Webfont Settings:
Google Map Settings:
Google reCaptcha Settings:
Vimeo and Youtube video embeds:
Privacy Policy
You can read about our cookies and privacy settings in detail on our Privacy Policy Page.