Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PCHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk12 min

How to Deploy a NestJS Application with Nginx on Ubuntu

Deploy a NestJS application on Ubuntu with a supervised Node.js process, Nginx reverse proxy, DNS, TLS, firewall rules, and a complete recovery checklist.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The dependable Ubuntu production pattern is to compile NestJS to JavaScript, run that compiled process under PM2 or systemd on a private loopback port, and let Nginx handle the public IP, TLS, and reverse proxying. DNS must point to the server, ports 80 and 443 must be reachable, and the deployment is not complete until you have tested logs, HTTPS, and recovery after a reboot.

What you need before deploying

Use a reachable Ubuntu server with administrative access and a domain name that you control. A simple VPS is economical, but you remain responsible for operating-system updates, security, backups, secrets, and any database or message broker your application needs.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Requirement What to confirm
Ubuntu account Create a non-root administrative user and use sudo for system changes.
Node.js Install an active-LTS release supported by the current NestJS deployment guidance: Node.js 20.19 or later, or 22.12 or later on the 22.x line.
Application The source code, its lockfile, production environment variables, and access to required databases, caches, or brokers.
DNS Create an A record (and an AAAA record only when IPv6 is correctly configured) pointing the hostname at the server.
Network Allow SSH administration and public TCP ports 80 and 443. Do not expose the NestJS port to the Internet.
Build output npm run build must produce the compiled entry point, normally dist/main.js; projects with a custom layout may use dist/src/main.js.

Check the installed runtimes before you begin:

node --version
npm --version
lsb_release -a

If the Node version is below the supported range, upgrade it before installing application dependencies. Keep the exact Node major version consistent between build and production environments when possible.

1. Prepare and secure the Ubuntu host

Create an administrative user

Use the provider’s console or an existing administrator to create a separate account, grant it sudo access, and install your SSH public key. After testing that account in a new terminal, disable direct root login and password authentication in your SSH policy where that matches your access plan. Keep an emergency console path available before changing SSH settings.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.

Apply updates and configure the firewall

sudo apt update
sudo apt upgrade -y
sudo apt install -y nginx git ufw

Allow only the services you actually operate. Replace the SSH rule with a restricted source range if your team has a fixed administration network.

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Do not add port 3000 (or your chosen application port) to the firewall. Nginx should be the only public listener for the API.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Verify DNS before requesting a certificate

Point the hostname you will publish, such as api.example.com, to the server’s public IPv4 address. Add IPv6 only if Nginx is listening on IPv6 and the host is reachable over it. From another machine, check the result:

dig +short api.example.com
dig +short AAAA api.example.com

Wait for the authoritative DNS answer to update. A certificate authority and remote clients must be able to reach the same hostname through the public network.

2. Transfer the NestJS application

Place the application in a stable directory owned by the service account, for example /srv/nest-api. You can clone a private repository with a deploy key, pull an approved release artifact, or copy a build from a controlled pipeline. Never commit passwords, tokens, private keys, or production environment files to the repository.

sudo mkdir -p /srv/nest-api
sudo chown -R $USER:$USER /srv/nest-api
cd /srv/nest-api
git clone YOUR_REPOSITORY_URL .

The final command is illustrative: use your repository’s real URL and a specific release or commit rather than deploying an unreviewed branch. Keep a lockfile in version control. Install with the lockfile-aware command:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
npm ci

If the project deliberately has no lockfile, use the package manager and install policy documented by that project. Ensure all dependencies needed to compile the application are present; removing development dependencies before the build can make TypeScript compilation fail.

Create production configuration outside the repository

Provide values such as the database URL, signing keys, allowed origins, and the listening port through the service environment. A common location is a root-readable or service-user-readable file outside the checkout, such as /etc/nest-api.env. Restrict its permissions:

Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
sudo install -o root -g root -m 600 /dev/null /etc/nest-api.env
sudoedit /etc/nest-api.env

Set NODE_ENV=production and, if your code reads it, PORT=3000. Do not print this file in support logs or place it in a public web directory.

3. Build and smoke-test the compiled application

Build from the application directory:

cd /srv/nest-api
npm run build

Inspect the output rather than assuming the path:

find dist -maxdepth 3 -type f -name 'main.js' -print

The usual production entry point is dist/main.js. A custom NestJS project can emit dist/src/main.js or another path, and the process manager must use the path that actually exists.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Start the compiled program temporarily with production settings and bind it to loopback. If the application currently calls app.listen() without a host, adjust it so the host is 127.0.0.1 (or another private interface) and the port comes from configuration. The public edge will be Nginx, not the Node process.

NODE_ENV=production PORT=3000 node dist/main.js

Leave that command running in one terminal and test it from the server in another:

curl -i http://127.0.0.1:3000/

Use a real health or status route if your application defines one. Confirm that database connections, migrations, queues, and other required services initialize successfully. Stop the temporary process with Ctrl-C after the smoke test.

4. Keep NestJS running with a supervisor

An SSH session is not a service manager. A supervisor restarts the process after a crash, starts it at boot, and provides a consistent place to inspect logs. On a single VPS, PM2 is a straightforward choice; systemd is the native alternative when you want unit files, explicit limits, and journal integration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Option A: PM2

Install PM2 for the supported Node installation and start the compiled entry point. Set the production environment explicitly:

sudo npm install --global pm2
cd /srv/nest-api
NODE_ENV=production pm2 start dist/main.js --name nest-api --time
pm2 status
pm2 logs nest-api --lines 100

If you use an environment file, load it through your PM2 ecosystem configuration or export the variables before starting the process; do not place secrets in a command that will be retained in shell history. Confirm the process is listening only on the intended local port:

Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
ss -ltnp | grep 3000
curl -i http://127.0.0.1:3000/

Generate PM2’s systemd startup integration:

pm2 startup systemd

PM2 prints a second command containing the user and environment. Run that printed command with the requested privileges, then save the current process list:

pm2 save

The save step matters: systemd can invoke PM2 at reboot, but PM2 needs the saved list to know which applications to resurrect. After every intentional process-list change, run pm2 save again.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

For a release, build the new code, restart the named process, and inspect the logs:

cd /srv/nest-api
npm ci
npm run build
pm2 restart nest-api
pm2 logs nest-api --lines 100

Use a graceful reload strategy when your application and deployment process support it. A restart briefly replaces the process; Nginx remains available while the upstream is being replaced.

Option B: native systemd

Use systemd directly when you prefer native service ownership and journald. First determine the absolute Node path:

command -v node

Create /etc/systemd/system/nest-api.service, replacing the example path and user with the account that owns the deployment:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
[Unit]
Description=NestJS API
After=network.target

[Service]
Type=simple
User=nestapi
WorkingDirectory=/srv/nest-api
EnvironmentFile=/etc/nest-api.env
Environment=NODE_ENV=production
ExecStart=/usr/bin/node /srv/nest-api/dist/main.js
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

If command -v node returns a different path, use that path in ExecStart. Then load, enable, and start the unit:

sudo systemctl daemon-reload
sudo systemctl enable --now nest-api
sudo systemctl status nest-api
sudo journalctl -u nest-api -n 100 --no-pager

For a new release, run the build and restart the unit:

Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
cd /srv/nest-api
npm ci
npm run build
sudo systemctl restart nest-api
sudo systemctl is-active nest-api

PM2 or systemd?

Operational concern PM2 systemd
Crash and reboot recovery PM2 restarts the app and its startup hook integrates with systemd; save the process list. Unit settings such as Restart=on-failure and systemctl enable are native.
Logs pm2 logs provides application-focused output. journalctl -u nest-api integrates with the host journal and its retention policy.
Deployment reload Named process restarts and PM2 reload features can be convenient for multiple workers. Explicit systemctl restart or reload behavior is easy to audit in unit files.
Resource controls Available through PM2 configuration and the underlying service, but configuration is split. CPU, memory, file-descriptor, sandboxing, and restart policies live in one service definition.
Scaling Can run multiple workers on one host. Multiple units or instances can be managed explicitly; Nginx can balance across them.
Environment ownership Usually managed in an ecosystem file, shell environment, or PM2 configuration. Usually managed with EnvironmentFile and unit permissions.

Choose one supervisor for the production process. Running the same NestJS application under both PM2 and systemd creates duplicate listeners and confusing restarts.

5. Install and configure Nginx as the reverse proxy

Nginx owns the public ports, receives HTTP requests, and forwards them to the private NestJS listener. This separation lets Node remain off the Internet while Nginx handles connection management, TLS, and later load balancing if you add more application instances.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create an HTTP server block

Create a site file such as /etc/nginx/sites-available/nest-api. This example uses api.example.com and an application listening on 127.0.0.1:3000; change both to match your deployment.

server {
    listen 80;
    listen [::]:80;
    server_name api.example.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_connect_timeout 5s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

The forwarded headers let NestJS and its middleware determine the original host, client address, protocol, and port. Configure your framework’s trusted-proxy behavior appropriately before using forwarded values for redirects, secure cookies, rate limits, or audit records.

Enable the site and remove or disable the default site if it would answer the same hostname:

sudo ln -s /etc/nginx/sites-available/nest-api /etc/nginx/sites-enabled/nest-api
sudo nginx -t
sudo systemctl reload nginx

Never reload an untested configuration. nginx -t must report a successful syntax test; if it fails, read the reported file and line number, correct it, and test again.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check the proxy before adding TLS

With DNS pointing at the host, request the HTTP endpoint:

curl -i http://api.example.com/

If the local curl succeeds but the domain request fails, inspect Nginx’s access and error logs and confirm the DNS answer and firewall. If Nginx returns a gateway error, check that the supervisor is active and that the app is listening on the address and port used by proxy_pass.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

6. Add HTTPS and redirect HTTP

Use a trusted certificate authority and an ACME or other approved certificate client for the hostname. The public certificate flow requires the domain to resolve to this server and inbound port 80 (or another method supported by your certificate client) to be reachable. Keep port 443 open for normal HTTPS traffic.

Serve the certificate on 443

After the certificate client has issued files for api.example.com, update the Nginx configuration. The exact certificate paths depend on the client; the following paths are the conventional layout for a certificate stored under that hostname:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name api.example.com;

    ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_connect_timeout 5s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

Nginx supports HTTP/2 options whose syntax varies by installed version. Enable HTTP/2 only with the directive form supported by your Nginx package, then test the complete configuration.

Redirect every HTTP request

Replace the HTTP proxy block with a redirect once the HTTPS block works:

server {
    listen 80;
    listen [::]:80;
    server_name api.example.com;
    return 301 https://$host$request_uri;
}

Run the configuration test and reload:

sudo nginx -t
sudo systemctl reload nginx

Verify both the redirect and the certificate from a client:

curl -I http://api.example.com/
curl -I https://api.example.com/

Check the certificate’s hostname, expiration date, and complete chain in a browser or TLS inspection tool. Configure and test automatic renewal with the certificate client you selected. A certificate that works today but cannot renew is an incident waiting to happen; perform a renewal dry run when the client provides one and record where its renewal logs are stored.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

7. Verify the complete service and rehearse recovery

A successful start command proves only that one process started once. Use this sequence after the first deployment and after changes to the host, Node runtime, supervisor, Nginx, or certificates.

  1. DNS: Resolve the A and any AAAA records from an external network and confirm they identify the intended server.
  2. Local application: Confirm the supervisor is active and that curl http://127.0.0.1:3000/ (or your health route) returns the expected response.
  3. Listener exposure: Run ss -ltnp and verify Node is bound to loopback while Nginx owns ports 80 and 443.
  4. HTTP behavior: Confirm port 80 returns a permanent redirect and does not expose an unintended Nginx default page.
  5. TLS: Request the HTTPS endpoint, inspect the certificate name and expiry, and test the API routes clients actually use.
  6. Logs: Review application logs through PM2 or journald, then inspect Nginx access and error logs for upstream failures, unexpected status codes, or repeated scans.
  7. Reboot: Schedule a maintenance window, reboot the server, and repeat the local, HTTPS, and log checks. Confirm the supervisor restores NestJS and Nginx starts with the expected site.

Keep a recovery copy of the environment configuration, deployment commands, Nginx server blocks, certificate-renewal instructions, and database backups. Store secrets securely rather than copying them into a public repository or an unprotected ticket.

Common failures and precise fixes

Symptom Likely cause What to check or change
npm run build succeeds but the service exits immediately The supervisor points at the wrong compiled file or required environment values are missing. Locate the actual main.js under dist, update ExecStart or PM2, and read the process error output.
“Connection refused” from Nginx NestJS is stopped, bound to a different address, or listening on another port. Check supervisor status, ss -ltnp, the PORT value, and the proxy_pass address.
502 Bad Gateway after a deployment The new process failed during startup or Nginx was reloaded before the listener returned. Read application and Nginx error logs, run the compiled command manually with production variables, then restart after fixing the startup error.
Requests show the wrong client IP or protocol Forwarding headers are absent or the framework does not trust the proxy correctly. Preserve the Host and X-Forwarded headers in the server block and configure trusted-proxy handling deliberately.
HTTP works but HTTPS times out Port 443 is blocked at UFW or the provider firewall, or Nginx is not listening on 443. Check both firewalls, ss -ltnp, nginx -t, and the TLS server block.
Certificate issuance or renewal fails DNS points elsewhere, an AAAA record reaches an unconfigured IPv6 path, or port 80/443 is inaccessible. Resolve both record types externally, remove a stale AAAA record, allow the required ports, and rerun the certificate client’s validation.
Service disappears after reboot PM2’s startup integration was not completed or its process list was not saved; a systemd unit may not be enabled. For PM2, run the printed startup command and pm2 save. For systemd, use systemctl enable --now nest-api and inspect boot logs.
Nginx reload fails A syntax error, duplicate server name, or invalid certificate path exists. Run sudo nginx -t, fix the reported file and line, verify certificate files and permissions, then reload.

Scaling beyond one NestJS process

One supervised process is often enough for a small service. When traffic or availability requirements justify multiple instances, run each instance on a distinct local port or host and configure Nginx upstream load balancing. Keep the application stateless where possible, move shared state to the appropriate database or cache, and make sure every instance receives compatible environment variables and code. Nginx can distribute traffic across those Node.js application servers; process supervision still has to restart each instance.

At that point, define how deployments drain or replace old workers, how long-running requests are handled, and where aggregate logs and metrics go. NestJS also documents observability tooling for requests, jobs, errors, logs, and traces; adding it is useful when basic access logs no longer explain production behavior.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Deployment checklist

  • Supported active-LTS Node.js installed and version checked.
  • Non-root administration, updates, SSH policy, and a limited firewall configured.
  • DNS A/AAAA records verified from outside the server.
  • Dependencies installed from the lockfile and production environment stored outside source control.
  • npm run build completed and the real dist entry point confirmed.
  • NestJS tested on a private loopback port with required backing services.
  • Exactly one supervisor configured, enabled at boot, and tested for crash recovery.
  • Nginx proxy headers, timeouts, server name, and upstream port validated with nginx -t.
  • Trusted certificate installed, HTTP redirected to HTTPS, and renewal verified.
  • External HTTPS, application health, logs, and a deliberate reboot all checked.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.