Hardware FixRecommendedDevice not working? Your driver may be the problemCheck updates for common hardware issues.Fix DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk17 min

How to Transform Target Variables for Regression in Python

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.

Target transformation is a practical regression technique for making a difficult prediction problem easier to model. When the response variable is highly skewed, has a long tail, or shows changing variance across its range, applying a transformation such as log, square root, Box-Cox, or Yeo-Johnson can help a model learn patterns more effectively.

The main idea is to train the model on a transformed version of the target, then convert predictions back to the original scale before interpretation and evaluation. This is especially useful for outcomes like prices, revenue, demand, claim amounts, or bioal measurements, where errors on the raw scale may be uneven and extreme values can dominate training.

As an Amazon Associate I earn from qualifying purchases.

Python makes this workflow straightforward with NumPy, pandas, and scikit-learn’s TransformedTargetRegressor, which handles the transformation and inverse transformation cleanly inside a modeling pipeline. Used carefully, target transformations can improve accuracy, stabilize residuals, and produce predictions that are easier to evaluate on the scale that matters.

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

Why Transform the Target Variable in Regression

Transforming the target variable in regression means training the model to predict a modified version of y instead of the original outcome. For example, a house price model might learn log(price) rather than price. After prediction, the output is transformed back to the original scale so users still receive predictions in dollars, units, milliseconds, counts, or whatever the target represents.

The main reason to transform the target is to make the learning problem easier for the model. Many regression algorithms perform better when the relationship between the features and the target is more linear, the target distribution is less skewed, and the variance of errors is more stable across the prediction range. A raw target with a long right tail, such as income, sales, insurance claims, delivery time, or property value, can cause a model to focus too heavily on large values. A log or power transformation can compress extreme values and let the model learn patterns across the full range more evenly.

Target transformations are especially useful when prediction errors grow as the target gets larger. Suppose a model predicts monthly revenue for stores. Being off by $1,000 for a small store may be severe, while being off by $1,000 for a large store may be minor. On the raw scale, standard regression losses such as mean squared error treat both errors the same. Training on a transformed target, such as the logarithm of revenue, often shifts the model toward learning relative differences rather than only absolute differences.

Common problems target transformations can reduce

  • Right-skewed targets: A few very large values dominate the loss function and make the model less accurate for typical observations.
  • Non-constant error variance: Errors are small for low target values and much larger for high target values, violating assumptions behind many linear models.
  • Nonlinear feature-target relationships: A transformation can turn multiplicative or exponential patterns into relationships that are closer to linear.
  • Outlier sensitivity: Compressing large values can reduce the influence of extreme observations during training.

For example, if price increases roughly by a percentage when square footage increases, modeling log(price) can be more appropriate than modeling price directly. A linear model on the log target can represent mullicative effects: an additional feature value corresponds to a proportional change in the original target. This often matches real-world domains such as finance, marketing, real estate, and demand forecasting.

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

Transforming the target is not the same as scaling input features. Feature scaling changes X, while target transformation changes y. Both can appear in the same workflow, but they solve different problems. A preprocessing pipeline might standardize numeric features, one-hot encode categorical features, and also train the regressor on a transformed target. In scikit-learn, this separation is handled cleanly with Pipeline for feature preprocessing and TransformedTargetRegressor for target transformation.

The final model must always be evaluated on predictions returned to the original target scale. If a model is trained on log(y), metrics such as MAE, RMSE, and R² should usually be computed after applying the inverse transformation, such as exp or expm1. This keeps evaluation interpretable and aligned with the real prediction task.

When Target Transformation Helps—and When It Does Not

Target transformation is most useful when the response variable has a shape or error pattern that makes a standard regression model struggle. Many regression algorithms implicitly work better when errors are roughly symmetric, variance is reasonably stable across the prediction range, and extreme target values do not dominate the loss. Transforming y can make the learning problem easier by compressing large values, spreading out small values, or making the relationship between features and the target closer to linear.

A common case is a strictly positive, right-skewed target such as house prices, insurance claim amounts, revenue, salaries, or time-to-resolution. In these examples, a few very large observations can pull a model toward the upper tail. A log transform often helps because it reduces the influence of large values and turns mullicative effects into additive ones. For instance, if an extra bedroom tends to increase price by a percentage rather than a fixed dollar amount, modeling log(price) may fit the data better than modeling raw price.

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

Situations where target transformation often helps

  • Right-skewed positive targets: log, square root, or Box-Cox transformations can reduce skew and make residuals more balanced.
  • Heteroscedastic errors: when residual spread grows as the target grows, a transformation can stabilize variance.
  • Multiplicative relationships: if feature effects are proportional, such as “10% more” rather than “10 units more,” log transformation can match the data-generating pattern.
  • Outlier-sensitive models: linear regression, ridge, lasso, k-nearest neighbors, and neural networks trained with squared error can benefit when extreme target values are compressed.
  • Targets with natural lower bounds: durations, counts, prices, and concentrations often have distributions that become easier to model after transformation.

Target transformation is not automatically beneficial. If the original target is already approximately symmetric, has stable variance, and has a relationship with the features that the model can capture well, transforming it may add unnecessary complexity. Tree-based ensembles such as random forests, gradient boosting, and histogram-based boosting can handle nonlinear feature-target relationships well, so they may gain less from transforming the target. Still, even with these models, a transformation can help when the evaluation metric or target distribution makes very large values dominate training.

Situations where target transformation may not help

  • Targets with zero or negative values: a plain log or Box-Cox transform is invalid unless the target is shifted or a different method such as Yeo-Johnson is used.
  • Interpretability on the original scale is critical: coefficients from a model trained on transformed targets require careful interpretation.
  • The metric rewards raw-scale accuracy: improving errors on the transformed scale does not always improve MAE, RMSE, or business cost on the original scale.
  • The transformation distorts the objective: training on log(y) emphasizes relative error and may under-prioritize large absolute errors.
  • There are meaningful exact zeros: adding a constant before a log transform can change the practical meaning of small target values.

The safest approach is to treat target transformation as a modeling choice and validate it empirically. Compare the untransformed model against one or more transformed-target versions using the same cross-validation splits. Always inverse-transform predictions before calculating metrics on the original target scale, because stakeholders usually care about dollars, minutes, units sold, or another real-world quantity rather than transformed values. Also inspect residual plots before and after transformation: if residuals become more evenly spread and less dominated by extreme targets, the transformation is likely helping in a meaningful way.

Common Target Transformations for Regression

Target transformations change the scale of y before fitting a regression model, then predictions are converted back to the original scale for interpretation. The best choice depends on the target’s distribution, valid value range, and the kind of prediction errors you want the model to emphasize. In practice, log, square root, Box-Cox, and Yeo-Johnson are the most common options because they can reduce right skew, stabilize variance, and make relationships with predictors easier for a model to learn.

Log transformation

The log transform is often used when the target is strictly positive and heavily right-skewed, such as house prices, revenue, insurance claims, user counts, or time-to-completion values. It compresses large values more than small values, which can reduce the influence of extreme high observations. A typical implementation uses np.log(y) or, when zeros are present, np.log1p(y), which computes log(1 + y). The inverse operations are np.exp(pred) and np.expm1(pred).

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

A log-transformed target also changes the meaning of model errors. The model is no longer minimizing errors directly in the original units; it is minimizing errors on a mullicative scale. This is often desirable when predicting 10 instead of 20 should be treated similarly to predicting 100,000 instead of 200,000 in relative terms. However, it is not suitable for negative targets, and plain log(y) cannot handle zeros.

Square root transformation

The square root transform is milder than the log transform and is useful for non-negative targets with moderate right skew. It is common for count-like outcomes, such as number of purchases, visits, incidents, or support tickets, especially when the values include zero. The forward transform is np.sqrt(y), and the inverse is squaring the predictions with pred ** 2. Because it compresses large values less aggressively than the log transform, it can be a good middle ground when log transformation over-corrects the distribution.

Rank #2
Sale
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems
  • Use scikit-learn to track an example ML project end to end
  • Explore several models, including support vector machines, decision trees, random forests, and ensemble methods
  • Exploit unsupervised learning techniques such as dimensionality reduction, clustering, and anomaly detection
  • Dive into neural net architectures, including convolutional nets, recurrent nets, generative adversarial networks, autoencoders, diffusion models, and transformers
  • Use TensorFlow and Keras to build and train neural nets for computer vision, natural language processing, generative models, and deep reinforcement learning

Box-Cox and Yeo-Johnson transformations

Box-Cox and Yeo-Johnson are power transformations that estimate a transformation parameter from the data instead of requiring you to choose a fixed formula. Box-Cox works only with strictly positive target values. Yeo-Johnson is more flexible because it supports zero and negative values, making it useful for targets such as profit, net change, residual demand, or signed measurements. In scikit-learn, these are commonly applied with PowerTransformer(method="box-cox") or PowerTransformer(method="yeo-johnson").

Transformation Target values allowed Common use case Inverse transform
Log Positive values; use log1p for zeros Strong right skew, multiplicative errors exp or expm1
Square root Non-negative values Moderate skew, count-like targets Square the prediction
Box-Cox Strictly positive values Automatic power transform for skewed positive targets Learned inverse transform
Yeo-Johnson Positive, zero, and negative values Automatic power transform when targets may be signed Learned inverse transform

These transformations should be treated as part of the modeling workflow rather than as permanent changes to the business meaning of the target. Fit the transformation only on the training target, apply the learned transformation during model fitting, and inverse-transform predictions before reporting metrics such as MAE, RMSE, or prediction intervals in the original units. This prevents data leakage and keeps model evaluation aligned with the scale users actually care about.

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

Transforming Targets with NumPy and pandas

Before using a model-specific wrapper such as TransformedTargetRegressor, it is helpful to understand how target transformations work directly with NumPy and pandas. In a regression problem, the target variable is usually stored as a one-dimensional array or a pandas Series, such as house prices, sales volume, insurance claims, or customer lifetime value. A transformation creates a modified version of that target for model training, while the final predictions must be converted back to the original scale.

For a positive, right-skewed target, a log transform is often the first option to try. If the target can contain zero, np.log1p is safer than np.log because it computes log(1 + y). The matching inverse is np.expm1, which returns predictions to the original units.

import numpy as np
import pandas as pd

df = pd.DataFrame({
"sqft": [900, 1200, 1500, 2000, 2800],
"price": [180000, 240000, 310000, 470000, 760000]
})

y = df["price"]

y_log = np.log1p(y)

# Later, after a model predicts on the log scale:
pred_log = np.array([12.2, 12.5, 12.8])
pred_price = np.expm1(pred_log)

A square root transform is another simple choice for non-negative targets. It is less aggressive than a log transform, so it can be useful when the target is moderately skewed rather than extremely skewed. The inverse operation is squaring the prediction. As with log transforms, the target must be non-negative.

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

y_sqrt = np.sqrt(y)

# Inverse transform predictions:
pred_sqrt = np.array([425, 500, 575])
pred_original = pred_sqrt ** 2

When working with pandas, it is common to keep both the original and transformed target columns during exploration. This makes it easier to inspect distributions, compare statistics, and create diagnostic plots without losing the original values.

df["price_log"] = np.log1p(df["price"])
df["price_sqrt"] = np.sqrt(df["price"])

print(df[["price", "price_log", "price_sqrt"]].describe())

Manual transformations are also useful for quick experiments with train-test splits. The main requirement is to train the model on the transformed target and evaluate predictions only after applying the inverse transformation. The following example uses a log-transformed target with a random forest regressor.

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error

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

X = df[["sqft"]]
y = df["price"]

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

y_train_log = np.log1p(y_train)

model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train_log)

pred_log = model.predict(X_test)
pred_price = np.expm1(pred_log)

mae = mean_absolute_error(y_test, pred_price)
rmse = mean_squared_error(y_test, pred_price, squared=False)

There are two practical details to watch closely. First, never transform the target and then forget the inverse step, because metrics computed on the transformed scale are not directly interpretable in the original business units. Second, choose transformation functions that are valid for the target values you actually have. For example, np.log and np.sqrt do not work for negative targets, and np.log also fails at zero. If zeros are present, use np.log1p; if negative values are present, consider Yeo-Johnson through scikit-learn instead of a manual log transform.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Log transform: use np.log1p(y) and invert with np.expm1(pred).
  • Square root transform: use np.sqrt(y) and invert with pred ** 2.
  • Keep original values: preserve the untransformed target for evaluation and reporting.
  • Evaluate on the original scale: calculate MAE, RMSE, and other business-facing metrics after inverse transformation.

Using TransformedTargetRegressor in scikit-learn

TransformedTargetRegressor is the safest way to apply a target transformation in a scikit-learn workflow. It wraps any regression model, transforms y during fitting, and automatically applies the inverse transformation when you call predict(). This keeps training and prediction consistent, avoids manual bookkeeping, and makes the transformation compatible with cross-validation and pipelines.

A common setup is to transform a positive, right-skewed target with np.log1p and invert predictions with np.expm1. The log1p function handles zero values correctly because it computes log(1 + y), while expm1 reverses it with better numerical precision than np.exp(y) - 1.

import numpy as np
from sklearn.compose import TransformedTargetRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import OneHotEncoder, StandardScaler
from sklearn.compose import ColumnTransformer
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

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.

numeric_features = ["area", "bedrooms", "age"]
categorical_features = ["neighborhood", "property_type"]

preprocessor = ColumnTransformer(
transformers=[
("num", StandardScaler(), numeric_features),
("cat", OneHotEncoder(handle_unknown="ignore"), categorical_features),
]
)

base_model = Pipeline(
steps=[
("preprocess", preprocessor),
("regressor", RandomForestRegressor(random_state=42))
]
)

model = TransformedTargetRegressor(
regressor=base_model,
func=np.log1p,
inverse_func=np.expm1
)

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

model.fit(X_train, y_train)
y_pred = model.predict(X_test)

In this example, the feature preprocessing happens inside the pipeline, while the target transformation happens outside it through TransformedTargetRegressor. During fit(), scikit-learn learns the model using log1p(y_train). During predict(), the wrapped model first predicts values on the log scale, then TransformedTargetRegressor converts them back to the original target scale. As a result, y_pred is already in the same units as y_test, such as dollars, counts, or sales volume.

Using learned transformations such as Box-Cox or Yeo-Johnson

For transformations that estimate parameters from the training data, use the transformer argument instead of func and inverse_func. PowerTransformer supports both Box-Cox and Yeo-Johnson. Box-Cox requires strictly positive targets, while Yeo-Johnson can handle zero and negative values.

from sklearn.preprocessing import PowerTransformer
from sklearn.linear_model import Ridge

ridge_pipeline = Pipeline(
steps=[
("preprocess", preprocessor),
("regressor", Ridge(alpha=1.0))
]
)

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

model = TransformedTargetRegressor(
regressor=ridge_pipeline,
transformer=PowerTransformer(method="yeo-johnson")
)

model.fit(X_train, y_train)
y_pred = model.predict(X_test)

When using a transformer, scikit-learn fits that transformer only on the training target inside each call to fit(). This matters during cross-validation because each fold gets its own target transformation learned from its training split. That prevents information from the validation fold from leaking into the model through the transformation parameters.

Evaluating predictions from a transformed-target model

Because predict() returns inverse-transformed values, standard regression metrics can be computed directly against the original target values.

mae = mean_absolute_error(y_test, y_pred)
rmse = mean_squared_error(y_test, y_pred, squared=False)
r2 = r2_score(y_test, y_pred)

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

print({"MAE": mae, "RMSE": rmse, "R2": r2})

This approach makes model comparison straightforward. A model trained with a transformed target and a model trained on the raw target can both be evaluated on the original scale, using the same test set and the same metrics. If the transformed-target model reduces large residuals, improves error stability, or produces more realistic predictions, it is a strong candidate for production use.

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

Evaluating Models After Inverse Transformation

After training a regression model on a transformed target, evaluate performance on the original target scale whenever the metric needs to reflect real-world error. If house prices were log-transformed during training, stakeholders usually care about dollar error, not error in log dollars. In scikit-learn, TransformedTargetRegressor handles this cleanly: predict() returns values after applying the inverse transformation, so metrics such as MAE, RMSE, and R² can be computed directly against the original y_test.

A typical evaluation pattern is to split the data, fit the wrapped model, generate predictions, and compare those predictions with the untransformed target values. This keeps the model-training scale separate from the reporting scale:

from sklearn.compose import TransformedTargetRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PowerTransformer
import numpy as np

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.

X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)

model = TransformedTargetRegressor(
regressor=RandomForestRegressor(random_state=42),
transformer=PowerTransformer(method="yeo-johnson")
)

model.fit(X_train, y_train)

y_pred = model.predict(X_test)

mae = mean_absolute_error(y_test, y_pred)
rmse = mean_squared_error(y_test, y_pred, squared=False)
r2 = r2_score(y_test, y_pred)

print({"MAE": mae, "RMSE": rmse, "R2": r2})

For custom transformations, the same principle applies. When using func and inverse_func, predictions from TransformedTargetRegressor.predict() are still returned on the original scale. For example, with a log transform, the wrapper applies np.log1p during fitting and np.expm1 during prediction:

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

from sklearn.compose import TransformedTargetRegressor
from sklearn.linear_model import Ridge
import numpy as np

log_model = TransformedTargetRegressor(
regressor=Ridge(),
func=np.log1p,
inverse_func=np.expm1
)

log_model.fit(X_train, y_train)
y_pred = log_model.predict(X_test)

print(mean_absolute_error(y_test, y_pred))

Be careful not to compare transformed predictions with untransformed targets, or inverse-transformed predictions with transformed targets. Both mistakes produce misleading metrics. If you manually transform y instead of using TransformedTargetRegressor, you must explicitly invert predictions before scoring:

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

ridge = Ridge()
y_train_log = np.log1p(y_train)

ridge.fit(X_train, y_train_log)

y_pred_log = ridge.predict(X_test)
y_pred = np.expm1(y_pred_log)

mae = mean_absolute_error(y_test, y_pred)

Cross-validation follows the same rule. Use metrics that receive predictions on the original scale by wrapping the estimator before passing it to cross_val_score or cross_validate. This avoids leakage because the target transformer is fitted only on each training fold:

from sklearn.model_selection import cross_validate

scores = cross_validate(
log_model,
X,
y,
scoring=["neg_mean_absolute_error", "neg_root_mean_squared_error", "r2"],
cv=5
)

print(-scores["test_neg_mean_absolute_error"].mean())
print(-scores["test_neg_root_mean_squared_error"].mean())
print(scores["test_r2"].mean())

Also inspect residuals on the original scale. A target transformation can improve model fit but still leave systematic underprediction for large values after inversion. Plot y_test versus y_pred, review residuals by prediction range, and check whether errors are acceptable for the business context. For skewed targets, it can be useful to report both absolute metrics, such as MAE, and relative metrics, such as mean absolute percentage error, as long as the target does not contain zeros or near-zero values.

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

Frequently Asked Questions

Should I transform the target variable or the input features?

They solve different problems. Transform input features when predictors are skewed, on very different scales, or have nonlinear relationships with the target. Transform the target when the prediction values themselves are skewed, strictly positive, heteroscedastic, or easier for the model to learn on another scale.

Do I need to inverse-transform predictions before calculating RMSE or MAE?

Yes, if you want RMSE, MAE, or R² to reflect performance in the original units of the target. For example, if you train on log house prices, evaluate predictions after converting them back to actual prices. scikit-learn’s TransformedTargetRegressor handles this automatically when you call predict().

When should I use log, square root, Box-Cox, or Yeo-Johnson for the target?

Use a log transform for positive targets with strong right skew, such as prices, revenue, or counts with large ranges. Square root is often useful for count-like targets with moderate skew. Box-Cox works only with strictly positive targets and can estimate a suitable power transform, while Yeo-Johnson supports zero and negative values.

Can target transformation make my model predictions biased after converting back?

It can, especially with log transforms, because averaging errors on the transformed scale does not always translate cleanly back to the original scale. This may cause underprediction for large values after inverse transformation. Always compare metrics and residual plots on the original target scale, not only on the transformed scale.

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

Is TransformedTargetRegressor better than manually transforming y with NumPy or pandas?

It is usually safer for model training and validation because it keeps the transformation inside the scikit-learn workflow. This helps avoid mistakes during cross-validation, grid search, and prediction, where manual inverse transforms are easy to forget. Manual transformation is still fine for quick experiments, visualization, or custom workflows.

Bottom Line

Transforming the target variable can make regression problems easier to model when the target is skewed, strictly positive, heteroscedastic, or dominated by large values. Log, square root, Box-Cox, and Yeo-Johnson transformations each fit different data shapes, but the best choice should be validated with cross-validation and evaluated on predictions converted back to the original scale.

Use tools like scikit-learn’s TransformedTargetRegressor inside your pipeline so training, inverse transformation, and prediction stay consistent and reproducible. As a next step, compare a baseline model against several target transformations using the same metrics on the original target scale, then choose the version that improves real-world predictive performance.

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.

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

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
Outdated Drivers Are Slowing You DownFree scan - exact matches

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.