Alcohol by Weight to Volume Calculator

Alcohol by Weight to Volume Calculator – Convert ABW to ABV :root { –primary-color: #004a99; –success-color: #28a745; –background-color: #f8f9fa; –text-color: #333; –border-color: #ccc; –card-background: #fff; –shadow: 0 4px 8px rgba(0,0,0,0.1); } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: var(–background-color); color: var(–text-color); line-height: 1.6; margin: 0; padding: 0; } .container { max-width: 960px; margin: 20px auto; padding: 20px; background-color: var(–card-background); border-radius: 8px; box-shadow: var(–shadow); } header { background-color: var(–primary-color); color: white; padding: 20px 0; text-align: center; margin-bottom: 20px; border-radius: 8px 8px 0 0; } header h1 { margin: 0; font-size: 2.2em; } .calculator-section { margin-bottom: 30px; padding: 25px; border: 1px solid var(–border-color); border-radius: 8px; background-color: var(–card-background); box-shadow: var(–shadow); } .calculator-section h2 { color: var(–primary-color); margin-top: 0; text-align: center; margin-bottom: 20px; } .input-group { margin-bottom: 15px; display: flex; flex-direction: column; align-items: flex-start; } .input-group label { display: block; margin-bottom: 8px; font-weight: bold; color: var(–primary-color); } .input-group input[type="number"], .input-group select { width: 100%; padding: 10px; border: 1px solid var(–border-color); border-radius: 4px; box-sizing: border-box; font-size: 1em; } .input-group input[type="number"]:focus, .input-group select:focus { outline: none; border-color: var(–primary-color); box-shadow: 0 0 0 2px rgba(0, 74, 153, 0.2); } .input-group .helper-text { font-size: 0.85em; color: #666; margin-top: 5px; } .error-message { color: #dc3545; font-size: 0.85em; margin-top: 5px; display: none; /* Hidden by default */ } .error-message.visible { display: block; } .button-group { display: flex; justify-content: space-between; margin-top: 20px; gap: 10px; } .button-group button { padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; font-size: 1em; transition: background-color 0.3s ease; flex-grow: 1; } .btn-primary { background-color: var(–primary-color); color: white; } .btn-primary:hover { background-color: #003366; } .btn-secondary { background-color: #6c757d; color: white; } .btn-secondary:hover { background-color: #5a6268; } .btn-success { background-color: var(–success-color); color: white; } .btn-success:hover { background-color: #218838; } #results { margin-top: 25px; padding: 20px; border: 1px solid var(–border-color); border-radius: 8px; background-color: var(–card-background); box-shadow: var(–shadow); text-align: center; } #results h3 { color: var(–primary-color); margin-top: 0; margin-bottom: 15px; } .result-item { margin-bottom: 10px; font-size: 1.1em; } .result-item strong { color: var(–primary-color); } .primary-result { font-size: 1.8em; font-weight: bold; color: var(–success-color); background-color: #e9ecef; padding: 15px; border-radius: 4px; margin-bottom: 15px; display: inline-block; min-width: 200px; } .formula-explanation { font-size: 0.9em; color: #555; margin-top: 15px; padding-top: 10px; border-top: 1px dashed #ccc; } table { width: 100%; border-collapse: collapse; margin-top: 20px; box-shadow: var(–shadow); } th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; } th { background-color: var(–primary-color); color: white; font-weight: bold; } tr:nth-child(even) { background-color: #f2f2f2; } caption { font-size: 1.1em; font-weight: bold; color: var(–primary-color); margin-bottom: 10px; caption-side: top; text-align: left; } canvas { display: block; margin: 20px auto; max-width: 100%; border: 1px solid var(–border-color); border-radius: 4px; } .chart-container { text-align: center; margin-top: 20px; padding: 15px; background-color: var(–card-background); border-radius: 8px; box-shadow: var(–shadow); } .chart-container h3 { color: var(–primary-color); margin-top: 0; margin-bottom: 15px; } .article-content { margin-top: 30px; padding: 25px; border: 1px solid var(–border-color); border-radius: 8px; background-color: var(–card-background); box-shadow: var(–shadow); } .article-content h2, .article-content h3 { color: var(–primary-color); margin-top: 25px; margin-bottom: 15px; } .article-content h2:first-child { margin-top: 0; } .article-content p { margin-bottom: 15px; } .article-content ul, .article-content ol { margin-left: 20px; margin-bottom: 15px; } .article-content li { margin-bottom: 8px; } .article-content a { color: var(–primary-color); text-decoration: none; } .article-content a:hover { text-decoration: underline; } .faq-item { margin-bottom: 15px; padding: 10px; border-left: 3px solid var(–primary-color); background-color: #f0f8ff; border-radius: 4px; } .faq-item strong { color: var(–primary-color); display: block; margin-bottom: 5px; } .related-links ul { list-style: none; padding: 0; } .related-links li { margin-bottom: 10px; } .related-links a { font-weight: bold; } .related-links span { font-size: 0.9em; color: #555; display: block; margin-top: 3px; } @media (max-width: 768px) { .container { margin: 10px; padding: 15px; } header h1 { font-size: 1.8em; } .button-group { flex-direction: column; } .button-group button { width: 100%; } }

Alcohol by Weight to Volume Calculator

Convert ABW to ABV Accurately

ABW to ABV Converter

Enter the percentage of alcohol by weight (e.g., 5 for 5%).
Enter the temperature of the liquid in Celsius (e.g., 20°C).

Results

Alcohol by Volume (ABV): –.–%
Density of Alcohol at Temp: –.– g/mL
Density of Water at Temp: –.– g/mL
Calculated ABW (%): –.–%
The conversion from Alcohol by Weight (ABW) to Alcohol by Volume (ABV) is based on the densities of ethanol and water at a given temperature. The formula is: ABV = (ABW / (Density of Ethanol / Density of Water)) * (Density of Water / Density of Ethanol) Simplified: ABV = ABW * (Density of Water / Density of Ethanol) This calculator uses empirical data for ethanol and water densities at various temperatures.

ABV vs. ABW at Varying Temperatures

Legend: ABV | ABW

What is Alcohol by Weight (ABW) vs. Alcohol by Volume (ABV)?

Understanding the difference between Alcohol by Weight (ABW) and Alcohol by Volume (ABV) is crucial for anyone involved in brewing, distilling, or simply appreciating alcoholic beverages. While both metrics indicate the alcoholic content of a liquid, they measure it in fundamentally different ways, leading to different numerical values. This distinction is particularly important in regulatory contexts and for recipe formulation.

Who Should Use an ABW to ABV Calculator?

This calculator is an invaluable tool for:

  • Homebrewers and Winemakers: To accurately determine the final alcohol content of their creations, especially when recipes are based on weight measurements or when specific gravity readings are converted.
  • Distillers: For precise measurement and compliance, particularly when dealing with spirits where ABV is the standard legal measure.
  • Beverage Industry Professionals: Quality control, product development, and regulatory compliance often require accurate ABW to ABV conversions.
  • Enthusiasts and Consumers: To better understand the alcohol content of various beverages, especially those where ABW might be stated (though less common for consumer products).

Common Misconceptions

A frequent misunderstanding is that ABW and ABV are interchangeable or that they represent the same percentage. In reality, due to the differing densities of alcohol (ethanol) and water, ABW will always be a lower number than ABV for the same beverage. For instance, a beverage that is 5% alcohol by weight is approximately 6.2% alcohol by volume. Another misconception is that temperature doesn't significantly affect the calculation; however, densities change with temperature, making temperature a critical input for accurate conversion.

Alcohol by Weight to Volume Calculator: Formula and Mathematical Explanation

The conversion from Alcohol by Weight (ABW) to Alcohol by Volume (ABV) relies on the principle that different substances have different densities. Ethanol (alcohol) is less dense than water. Therefore, a certain weight of alcohol occupies a larger volume than the same weight of water.

The Core Principle: Density

Density is defined as mass per unit volume (ρ = m/V). To convert from weight (mass) to volume, we need to know the density of the substance. The key to the ABW to ABV conversion lies in the densities of pure ethanol and pure water at a specific temperature.

Step-by-Step Derivation

  1. Define ABW: ABW is the mass of ethanol divided by the total mass of the solution, expressed as a percentage.
    ABW = (Mass of Ethanol / Total Mass of Solution) * 100
  2. Define ABV: ABV is the volume of ethanol divided by the total volume of the solution, expressed as a percentage.
    ABV = (Volume of Ethanol / Total Volume of Solution) * 100
  3. Relate Mass and Volume using Density: We know that Mass = Density × Volume.
    Mass of Ethanol = Density of Ethanol × Volume of Ethanol
    Total Mass of Solution = Density of Solution × Total Volume of Solution
  4. Substitute into ABW formula:
    ABW = ((Density of Ethanol × Volume of Ethanol) / (Density of Solution × Total Volume of Solution)) * 100
  5. Rearrange to find Volume of Ethanol / Total Volume of Solution:
    (Volume of Ethanol / Total Volume of Solution) = ABW / (Density of Ethanol / Density of Water) * (Density of Water / Density of Solution)
    Assuming the density of the solution is close to the density of water for typical beverage concentrations, or more accurately, using the ratio of densities:
    (Volume of Ethanol / Total Volume of Solution) = ABW * (Density of Water / Density of Ethanol)
  6. Calculate ABV: Multiply by 100 to get the percentage.
    ABV = [ABW * (Density of Water / Density of Ethanol)] * 100
    Or, more commonly expressed using the densities at the given temperature:
    ABV = ABW * (ρ_water / ρ_ethanol) (Where ρ represents density at the specified temperature)

Variable Explanations and Typical Ranges

The accuracy of the conversion depends heavily on the precise densities of ethanol and water at the measured temperature.

Variables Used in ABW to ABV Calculation
Variable Meaning Unit Typical Range
ABW Alcohol by Weight % 0% – 100% (Practically 0% – 60% for beverages)
Temperature Temperature of the liquid °C -10°C to 100°C (Relevant range for beverages: 0°C to 40°C)
ρwater Density of pure water at the given temperature g/mL ~0.997 g/mL (at 20°C) to ~1.000 g/mL (at 4°C)
ρethanol Density of pure ethanol at the given temperature g/mL ~0.789 g/mL (at 20°C)
ABV Alcohol by Volume (Calculated Result) % 0% – 100% (Practically 0% – 95.6% for pure ethanol)

Note: Densities are temperature-dependent. This calculator uses established empirical data for these densities.

Practical Examples (Real-World Use Cases)

Let's illustrate the conversion with practical scenarios:

Example 1: Homebrewed Beer

A homebrewer measures their finished beer and determines it has an Alcohol by Weight (ABW) of 4.5%. The beer was stored and measured at a cool temperature of 15°C.

  • Input ABW: 4.5%
  • Input Temperature: 15°C

Using the calculator:

  • Density of Water at 15°C ≈ 0.9991 g/mL
  • Density of Ethanol at 15°C ≈ 0.7945 g/mL
  • Calculation: ABV = 4.5% * (0.9991 g/mL / 0.7945 g/mL) ≈ 4.5% * 1.2575 ≈ 5.66%

Result: The beer is approximately 5.66% Alcohol by Volume (ABV). This is a typical ABV for many craft beers.

Example 2: Homemade Liqueur Base

A user is creating a homemade liqueur and wants to know the alcohol content. They have a base spirit that they estimate is 40% alcohol by weight (ABW) and they are working with it at room temperature, around 22°C.

  • Input ABW: 40%
  • Input Temperature: 22°C

Using the calculator:

  • Density of Water at 22°C ≈ 0.9978 g/mL
  • Density of Ethanol at 22°C ≈ 0.7885 g/mL
  • Calculation: ABV = 40% * (0.9978 g/mL / 0.7885 g/mL) ≈ 40% * 1.2654 ≈ 50.62%

Result: The base spirit is approximately 50.62% Alcohol by Volume (ABV). This is a common strength for spirits used in liqueurs and cocktails.

How to Use This Alcohol by Weight to Volume Calculator

Using our ABW to ABV calculator is straightforward. Follow these simple steps:

  1. Enter Alcohol by Weight (ABW): In the first input field, type the percentage of alcohol present in your liquid based on its weight. For example, if you know your beverage is 5% alcohol by weight, enter '5'.
  2. Enter Liquid Temperature: In the second input field, provide the temperature of your liquid in degrees Celsius (°C). Temperature is crucial because the densities of alcohol and water change with heat.
  3. Click 'Calculate ABV': Once you have entered the required values, click the 'Calculate ABV' button.

Reading the Results

The calculator will display:

  • Primary Result (ABV): This is the main output, showing the calculated Alcohol by Volume percentage in a large, highlighted format.
  • Intermediate Values: You'll see the calculated densities of alcohol and water at the specified temperature, along with the input ABW value for reference.
  • Formula Explanation: A brief description of the underlying formula is provided for clarity.

Decision-Making Guidance

The calculated ABV helps you understand the true alcoholic strength of your beverage according to the standard industry measure. This is vital for:

  • Compliance: Ensuring your product meets legal requirements for alcohol content.
  • Recipe Adjustment: Fine-tuning recipes for desired strength.
  • Product Labeling: Accurately stating the ABV on your product.

Use the 'Copy Results' button to easily transfer the key figures for documentation or sharing. The 'Reset' button allows you to quickly start over with default values.

Key Factors That Affect ABW to ABV Results

Several factors influence the accuracy and interpretation of ABW to ABV conversions:

  1. Temperature: This is the most significant factor. As temperature increases, both water and ethanol expand, decreasing their density. Conversely, colder temperatures increase density. The calculator uses temperature-specific density data for accuracy.
  2. Purity of Ethanol: The calculation assumes pure ethanol. Impurities or the presence of other alcohols (like methanol or fusel alcohols) can slightly alter the density of the alcohol component.
  3. Purity of Water: Similarly, the calculation assumes pure water. Dissolved solids (like sugars in wort or wine, or salts) will increase the density of the water component, affecting the final ABV calculation. This is particularly relevant for beverages with high sugar content.
  4. Concentration Effects: The density of a solution is not always a simple linear combination of its components' densities. While the formula used is a standard approximation, highly concentrated solutions might exhibit slight deviations.
  5. Measurement Accuracy: The precision of the initial ABW measurement and the temperature reading directly impacts the calculated ABV. Inaccurate inputs will lead to inaccurate outputs.
  6. Pressure: While typically negligible in standard atmospheric conditions for beverages, extreme pressure variations could theoretically affect liquid densities. This calculator operates under standard atmospheric pressure assumptions.

Frequently Asked Questions (FAQ)

Q1: Why is ABV always higher than ABW?

A: Alcohol (ethanol) is less dense than water. This means a certain weight of alcohol takes up more space (volume) than the same weight of water. Since ABV measures alcohol by volume and ABW by weight, the volume percentage will be higher than the weight percentage.

Q2: Can I use this calculator for spirits like vodka or whiskey?

A: Yes, you can, provided you have an accurate ABW measurement. However, spirits are almost universally measured and labeled by ABV, so you're more likely to start with an ABV and convert it to ABW if needed for specific calculations.

Q3: Does the sugar content in beer or wine affect the ABW to ABV calculation?

A: Yes, dissolved sugars increase the density of the water component. This calculator assumes pure water for simplicity. For highly accurate measurements of sugary beverages, specialized hydrometers or density meters calibrated for such solutions are recommended, or more complex formulas accounting for sugar content would be needed.

Q4: What is the standard temperature for alcohol measurements?

A: While measurements can be taken at any temperature, ABV is often standardized or referenced at 20°C (68°F) for legal and comparative purposes in many regions. However, this calculator works accurately at the temperature you provide.

Q5: How do I measure Alcohol by Weight (ABW)?

A: Measuring ABW typically involves precise weighing of the alcohol component and the total solution, often requiring laboratory equipment or specific chemical analysis methods. It's less common for home users than measuring specific gravity with a hydrometer (which relates to ABV).

Q6: Is the density data in the calculator accurate?

A: The calculator uses widely accepted empirical data for the densities of pure ethanol and pure water across a range of temperatures. While highly precise laboratory measurements might yield minute differences, this data is sufficient for practical and most regulatory purposes.

Q7: What if my liquid is frozen or boiling?

A: The calculator is designed for liquid states. Extremely low temperatures (near freezing) and high temperatures (near boiling) can affect density significantly and may introduce phase changes or safety concerns. Ensure your liquid is in a stable liquid state within the typical range for beverages.

Q8: Can this calculator convert ABV to ABW?

A: While this calculator is specifically designed for ABW to ABV, the reverse calculation (ABV to ABW) can be done by rearranging the formula: ABW = ABV * (Density of Ethanol / Density of Water). You would input the ABV as the desired output and use the calculator's intermediate density values to find the corresponding ABW.

Related Tools and Internal Resources

© 2023 Your Website Name. All rights reserved.

var alcoholWeightInput = document.getElementById('alcoholWeight'); var liquidTemperatureInput = document.getElementById('liquidTemperature'); var mainResultSpan = document.getElementById('mainResult'); var alcoholDensitySpan = document.getElementById('alcoholDensity'); var waterDensitySpan = document.getElementById('waterDensity'); var calculatedABWSpan = document.getElementById('calculatedABW'); var alcoholWeightError = document.getElementById('alcoholWeightError'); var liquidTemperatureError = document.getElementById('liquidTemperatureError'); var chart; var ctx = document.getElementById('abvAbwChart').getContext('2d'); // Density data for Ethanol and Water (g/mL) based on temperature (°C) // Source: Engineering ToolBox and other scientific references var densityData = { ethanol: [ { temp: -10, density: 0.8055 }, { temp: 0, density: 0.7979 }, { temp: 10, density: 0.7945 }, { temp: 15, density: 0.7921 }, { temp: 20, density: 0.7893 }, { temp: 25, density: 0.7861 }, { temp: 30, density: 0.7828 }, { temp: 40, density: 0.7757 }, { temp: 50, density: 0.7678 }, { temp: 60, density: 0.7591 }, { temp: 70, density: 0.7495 }, { temp: 80, density: 0.7389 }, { temp: 90, density: 0.7271 }, { temp: 100, density: 0.7137 } ], water: [ { temp: -10, density: 0.9981 }, { temp: 0, density: 0.9998 }, { temp: 10, density: 0.9997 }, { temp: 15, density: 0.9991 }, { temp: 20, density: 0.9982 }, { temp: 25, density: 0.9970 }, { temp: 30, density: 0.9956 }, { temp: 40, density: 0.9922 }, { temp: 50, density: 0.9880 }, { temp: 60, density: 0.9832 }, { temp: 70, density: 0.9778 }, { temp: 80, density: 0.9718 }, { temp: 90, density: 0.9653 }, { temp: 100, density: 0.9584 } ] }; function getDensity(temp, type) { var data = (type === 'ethanol') ? densityData.ethanol : densityData.water; if (temp = data[data.length – 1].temp) return data[data.length – 1].density; for (var i = 0; i = data[i].temp && temp <= data[i+1].temp) { var t1 = data[i].temp; var d1 = data[i].density; var t2 = data[i+1].temp; var d2 = data[i+1].density; // Linear interpolation return d1 + (d2 – d1) * (temp – t1) / (t2 – t1); } } return null; // Should not happen } function validateInput(value, id, errorElement, min, max) { var errorMsg = ""; if (value === "") { errorMsg = "This field is required."; } else { var numValue = parseFloat(value); if (isNaN(numValue)) { errorMsg = "Please enter a valid number."; } else if (numValue max) { errorMsg = "Value must be between " + min + " and " + max + "."; } } if (errorMsg) { errorElement.textContent = errorMsg; errorElement.classList.add('visible'); document.getElementById(id).style.borderColor = '#dc3545'; return false; } else { errorElement.textContent = ""; errorElement.classList.remove('visible'); document.getElementById(id).style.borderColor = '#ccc'; return true; } } function calculateABV() { var abw = parseFloat(alcoholWeightInput.value); var temp = parseFloat(liquidTemperatureInput.value); var isABWValid = validateInput(alcoholWeightInput.value, 'alcoholWeight', alcoholWeightError, 0, 100); var isTempValid = validateInput(liquidTemperatureInput.value, 'liquidTemperature', liquidTemperatureError, -10, 100); if (!isABWValid || !isTempValid) { mainResultSpan.textContent = "Error"; alcoholDensitySpan.textContent = "–.– g/mL"; waterDensitySpan.textContent = "–.– g/mL"; calculatedABWSpan.textContent = "–.–%"; return; } var rho_ethanol = getDensity(temp, 'ethanol'); var rho_water = getDensity(temp, 'water'); if (rho_ethanol === null || rho_water === null) { mainResultSpan.textContent = "Error"; alcoholDensitySpan.textContent = "N/A"; waterDensitySpan.textContent = "N/A"; calculatedABWSpan.textContent = "N/A"; return; } var abv = abw * (rho_water / rho_ethanol); mainResultSpan.textContent = abv.toFixed(2) + "%"; alcoholDensitySpan.textContent = rho_ethanol.toFixed(3) + " g/mL"; waterDensitySpan.textContent = rho_water.toFixed(3) + " g/mL"; calculatedABWSpan.textContent = abw.toFixed(2) + "%"; // Display input ABW for clarity updateChart(abw, temp); } function resetCalculator() { alcoholWeightInput.value = 5; liquidTemperatureInput.value = 20; calculateABV(); // Recalculate with default values } function copyResults() { var abv = mainResultSpan.textContent; var alcoholDensity = alcoholDensitySpan.textContent; var waterDensity = waterDensitySpan.textContent; var inputABW = calculatedABWSpan.textContent; // This is the input ABW var temp = liquidTemperatureInput.value; var resultText = "— ABW to ABV Conversion Results —\n\n"; resultText += "Input ABW: " + inputABW + "\n"; resultText += "Liquid Temperature: " + temp + "°C\n\n"; resultText += "Calculated ABV: " + abv + "\n"; resultText += "Density of Alcohol at Temp: " + alcoholDensity + "\n"; resultText += "Density of Water at Temp: " + waterDensity + "\n\n"; resultText += "Formula Used: ABV = ABW * (Density of Water / Density of Ethanol)"; navigator.clipboard.writeText(resultText).then(function() { // Optional: Show a confirmation message var copyButton = document.querySelector('button.btn-success'); var originalText = copyButton.textContent; copyButton.textContent = 'Copied!'; setTimeout(function() { copyButton.textContent = originalText; }, 1500); }).catch(function(err) { console.error('Failed to copy text: ', err); // Optional: Show an error message }); } function updateChart(currentABW, currentTemp) { var temperatures = []; var abvValues = []; var abwValues = []; // Generate data points for the chart for (var t = 0; t <= 40; t += 2) { // Temperature range 0°C to 40°C temperatures.push(t); var rho_eth = getDensity(t, 'ethanol'); var rho_wat = getDensity(t, 'water'); if (rho_eth && rho_wat) { // Calculate ABV for a hypothetical ABW (e.g., 5%) at this temp var hypotheticalABV = 5 * (rho_wat / rho_eth); abvValues.push(hypotheticalABV); // Calculate the corresponding ABW for the current input ABW at this temp var correspondingABW = currentABW * (getDensity(currentTemp, 'ethanol') / getDensity(currentTemp, 'water')) * (rho_wat / rho_eth); abwValues.push(correspondingABW); } } // Clear previous chart instance if it exists if (chart) { chart.destroy(); } chart = new Chart(ctx, { type: 'line', data: { labels: temperatures.map(function(t) { return t + '°C'; }), datasets: [{ label: 'ABV (for 5% ABW Input)', data: abvValues, borderColor: 'var(–primary-color)', backgroundColor: 'rgba(0, 74, 153, 0.1)', fill: false, tension: 0.1 }, { label: 'ABW (for current ABV Input)', data: abwValues, borderColor: 'var(–success-color)', backgroundColor: 'rgba(40, 167, 69, 0.1)', fill: false, tension: 0.1 }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, title: { display: true, text: 'Percentage (%)' } }, x: { title: { display: true, text: 'Temperature (°C)' } } }, plugins: { tooltip: { callbacks: { label: function(context) { var label = context.dataset.label || ''; if (label) { label += ': '; } if (context.parsed.y !== null) { label += context.parsed.y.toFixed(2) + '%'; } return label; } } } } } }); } // Initial calculation and chart render on page load document.addEventListener('DOMContentLoaded', function() { calculateABV(); // Add event listeners for real-time updates alcoholWeightInput.addEventListener('input', calculateABV); liquidTemperatureInput.addEventListener('input', calculateABV); }); // Chart.js library is required for this chart. // Include it via CDN or local file. // For this example, assuming Chart.js is available globally. // If not, you'd need to add: // before this script block.

Leave a Comment