For the best experience, please upgrade. Learn more
Essential Oils: Measuring % Concentrations and Fractions of Milliliters
We’re frequently asked “how much essential oil should I use in this formula”? And we give some commonly used range of percent concentrations. Through testing, however, we’ve realized measuring the amount of essential oil for this is a little more complex than one would think. The reason being is that each essential oil has a [...]
August 20 2011
Each essential oil has a different number of drops per milliliter, which should be taken into account with certain blend recipes.
We’re frequently asked “how much essential oil should I use in this formula”? And we give some commonly used range of percent concentrations. Through testing, however, we’ve realized measuring the amount of essential oil for this is a little more complex than one would think.
The reason being is that each essential oil has a different number of drops per unit (we use milliliters, which we’ll use to explain the calculations here) and each essential oil has a different number of drops per milliliter.
When a recipe, or your blending wishes, call for a particular % concentration of essential oil in a carrier (this is often the case in skin care formulas), the calculation can be made like this:
Since there are approximately 30 milliliters in one ounce (the typical unit of a blend with a carrier is one or more fluid ounces), we can easily figure the number (or fraction of) milliliters required. For a 5% concentration of essential oil in one total ounce of blend, we use 0.05 x 30ml = 1.5ml. For a 1% concentration, its 0.01 x 30ml = 0.3ml.
Great, so how do we measure that? Easy if you have to measure 1.5ml and you have a pipette with 1/2ml graduations. But 0.3ml? Unless you have a pipette marked with 1/10th ml graduations, you’ll have to count drops. But how many drops IS 0.3ml?
It’s not widely known that each essential oil dispenses a different number of drops per milliliter. The number varies widely: using a pipette or eye dropper that dispenses 20 drops per ml of WATER, you’ll find there are nearly 50 drops of some essential oils per ml.
So to be accurate, you want to know the number of drops per ml of each oil you’re measuring. And we’ve measured the number of drops per ml of each essential oil currently in stock at Ananda, and put it all together in this table. So to measure 0.3ml of an essential oil like High Elevation Lavender, which has about 40 drops per ml using a standard glass eye dropper or pipette, one multiplies 0.3 x 40 to get 12 drops.
This difference is due to a factor called ‘cohesion’, which is how strongly the molecules in a liquid stick together. Water has a fairly high cohesion, so it takes a weightier drop to separate from the liquid still in the pipette. Essential oils in general have lower cohesion, likely because there’s so many different molecules (venturing into unknown territory here 🙂 that they don’t pack together so closely like H2O.
The table will help you measure small amounts of essential oil when you’re working with a volume, rather than already being given a number of drops for a recipe. We hope it helps!
ANANDA CONTINUES JUST DIFFERENTLY You will soon see a slight change to our website. We have decided to transition the online store to a resource and information site.So while you can not purchase products, you can still have access to the incredible depth of information!We have 16 years of research, and useful tidbits about Essentials oils, CO2 extracts, Carrier Oils and […]
In Eternal Memory of Eric Cech, Ananda’s Founder “The best business model I can hope for is one that will run out of business.” – Eric Cech Eric’s business mindset was otherworldly. He admitted in casual conversation to his wife Anita one day: “The best business model I can hope for is one that […]
We Want You To Know – We Have Heard You. Your sentiments are important to us. We are considering our next steps with YOU in mind. Dearest Ananda Customers~ Many of you have asked us if this closure is permanent, or if there is any way we may be able to remain open, or make […]
It Comes with the Greatest Pleasure To let You Know… that…Because of YOU Ananda has Managed to Survive one of the Most Uncertain Times of its Tenure ~ We can not thank you enough for your enormous patience, understanding and support. From your incoming calls, comments on social media, direct messages across various channels, emails […]
Here are a small fraction of the heartfelt responses we have received following the notice of our business closure and liquidation sale. We offer all of you a deserved shout out for being the improbable, most essential, significant, factor in creating the Dream you are voicing to us: Hope for a Sustainable Future and Provider […]
Thank You For your Support Since 2004 The Ananda Apothecary is Closing Business SAD BUT TRUE As previously disclosed, The Ananda Apothecary has been greatly affected by to the global health situation. Bottom line is, we were increasing growing slim on product with no resupply any time soon. We are unable to get goods […]
* SPRING CLEANING SPECIAL * *OFFERS VALID APRIL 24 – MAY 2, OR UNTIL SUPPLIES LAST. SOME RESTRICTIONS APPLY. WE’RE GIVING OILS AWAY Get Yours Today! WITH ANY PURCHASE THAT FITS YOUR BUDGET GET UP TO THREE OF YOUR ALL TIME FAVORITE OILS FREE *We have limited supplies due to overseas shipping restrictions. Order now while supplies last. ALSO […]
100% pure and genuine
×
What aspect of your life are you looking to improve?
window.cfields = {"1":"quiz_score"};
window._show_thank_you = function(id, message, trackcmp_url) {
var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');
form.querySelector('._form-content').style.display = 'none';
thank_you.innerHTML = message;
thank_you.style.display = 'block';
if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {
// Site tracking URL to use after inline form submission.
_load_script(trackcmp_url);
}
if (typeof window._form_callback !== 'undefined') window._form_callback(id);
};
window._show_error = function(id, message, html) {
var form = document.getElementById('_form_' + id + '_'), err = document.createElement('div'), button = form.querySelector('button'), old_error = form.querySelector('._form_error');
if (old_error) old_error.parentNode.removeChild(old_error);
err.innerHTML = message;
err.className = '_error-inner _form_error _no_arrow';
var wrapper = document.createElement('div');
wrapper.className = '_form-inner';
wrapper.appendChild(err);
button.parentNode.insertBefore(wrapper, button);
document.querySelector('[id^="_form"][id$="_submit"]').disabled = false;
if (html) {
var div = document.createElement('div');
div.className = '_error-html';
div.innerHTML = html;
err.appendChild(div);
}
};
window._load_script = function(url, callback) {
var head = document.querySelector('head'), script = document.createElement('script'), r = false;
script.type = 'text/javascript';
script.charset = 'utf-8';
script.src = url;
if (callback) {
script.onload = script.onreadystatechange = function() {
if (!r && (!this.readyState || this.readyState == 'complete')) {
r = true;
callback();
}
};
}
head.appendChild(script);
};
(function() {
if (window.location.search.search("excludeform") !== -1) return false;
var getCookie = function(name) {
var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));
return match ? match[2] : null;
}
var setCookie = function(name, value) {
var now = new Date();
var time = now.getTime();
var expireTime = time + 1000 * 60 * 60 * 24 * 365;
now.setTime(expireTime);
document.cookie = name + '=' + value + '; expires=' + now + ';path=/';
}
var addEvent = function(element, event, func) {
if (element.addEventListener) {
element.addEventListener(event, func);
} else {
var oldFunc = element['on' + event];
element['on' + event] = function() {
oldFunc.apply(this, arguments);
func.apply(this, arguments);
};
}
}
var _removed = false;
var form_to_submit = document.getElementById('_form_3_');
var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false; var getUrlParam = function(name) {
var regexStr = '[\?&]' + name + '=([^&#]*)';
var results = new RegExp(regexStr, 'i').exec(window.location.href);
return results != undefined ? decodeURIComponent(results[1]) : false;
}; for (var i = 0; i < allInputs.length; i++) {
var regexStr = "field\\[(\\d+)\\]";
var results = new RegExp(regexStr).exec(allInputs[i].name);
if (results != undefined) {
allInputs[i].dataset.name = window.cfields[results[1]];
} else {
allInputs[i].dataset.name = allInputs[i].name;
}
var fieldVal = getUrlParam(allInputs[i].dataset.name); if (fieldVal) {
if (allInputs[i].type == "radio" || allInputs[i].type == "checkbox") {
if (allInputs[i].value == fieldVal) {
allInputs[i].checked = true;
}
} else {
allInputs[i].value = fieldVal;
}
}
} var remove_tooltips = function() {
for (var i = 0; i < tooltips.length; i++) {
tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);
}
tooltips = [];
};
var remove_tooltip = function(elem) {
for (var i = 0; i < tooltips.length; i++) {
if (tooltips[i].elem === elem) {
tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);
tooltips.splice(i, 1);
return;
}
}
};
var create_tooltip = function(elem, text) {
var tooltip = document.createElement('div'), arrow = document.createElement('div'), inner = document.createElement('div'), new_tooltip = {};
if (elem.type != 'radio' && elem.type != 'checkbox') {
tooltip.className = '_error';
arrow.className = '_error-arrow';
inner.className = '_error-inner';
inner.innerHTML = text;
tooltip.appendChild(arrow);
tooltip.appendChild(inner);
elem.parentNode.appendChild(tooltip);
} else {
tooltip.className = '_error-inner _no_arrow';
tooltip.innerHTML = text;
elem.parentNode.insertBefore(tooltip, elem);
new_tooltip.no_arrow = true;
}
new_tooltip.tip = tooltip;
new_tooltip.elem = elem;
tooltips.push(new_tooltip);
return new_tooltip;
};
var resize_tooltip = function(tooltip) {
var rect = tooltip.elem.getBoundingClientRect();
var doc = document.documentElement, scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0));
if (scrollPosition < 40) {
tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _below';
} else {
tooltip.tip.className = tooltip.tip.className.replace(/ ?(_above|_below) ?/g, '') + ' _above';
}
};
var resize_tooltips = function() {
if (_removed) return;
for (var i = 0; i < tooltips.length; i++) {
if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);
}
};
var validate_field = function(elem, remove) {
var tooltip = null, value = elem.value, no_error = true;
remove ? remove_tooltip(elem) : false;
if (elem.type != 'checkbox') elem.className = elem.className.replace(/ ?_has_error ?/g, '');
if (elem.getAttribute('required') !== null) {
if (elem.type == 'radio' || (elem.type == 'checkbox' && /any/.test(elem.className))) {
var elems = form_to_submit.elements[elem.name];
if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {
no_error = elem.checked;
}
else {
no_error = false;
for (var i = 0; i < elems.length; i++) {
if (elems[i].checked) no_error = true;
}
}
if (!no_error) {
tooltip = create_tooltip(elem, "Please select an option.");
}
} else if (elem.type =='checkbox') {
var elems = form_to_submit.elements[elem.name], found = false, err = [];
no_error = true;
for (var i = 0; i < elems.length; i++) {
if (elems[i].getAttribute('required') === null) continue;
if (!found && elems[i] !== elem) return true;
found = true;
elems[i].className = elems[i].className.replace(/ ?_has_error ?/g, '');
if (!elems[i].checked) {
no_error = false;
elems[i].className = elems[i].className + ' _has_error';
err.push("Checking %s is required".replace("%s", elems[i].value));
}
}
if (!no_error) {
tooltip = create_tooltip(elem, err.join(' '));
}
} else if (elem.tagName == 'SELECT') {
var selected = true;
if (elem.multiple) {
selected = false;
for (var i = 0; i < elem.options.length; i++) {
if (elem.options[i].selected) {
selected = true;
break;
}
}
} else {
for (var i = 0; i < elem.options.length; i++) {
if (elem.options[i].selected && !elem.options[i].value) {
selected = false;
}
}
}
if (!selected) {
elem.className = elem.className + ' _has_error';
no_error = false;
tooltip = create_tooltip(elem, "Please select an option.");
}
} else if (value === undefined || value === null || value === '') {
elem.className = elem.className + ' _has_error';
no_error = false;
tooltip = create_tooltip(elem, "This field is required.");
}
}
if (no_error && elem.name == 'email') {
if (!value.match(/^[\+_a-z0-9-'&=]+(\.[\+_a-z0-9-']+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/i)) {
elem.className = elem.className + ' _has_error';
no_error = false;
tooltip = create_tooltip(elem, "Enter a valid email address.");
}
}
if (no_error && /date_field/.test(elem.className)) {
if (!value.match(/^\d\d\d\d-\d\d-\d\d$/)) {
elem.className = elem.className + ' _has_error';
no_error = false;
tooltip = create_tooltip(elem, "Enter a valid date.");
}
}
tooltip ? resize_tooltip(tooltip) : false;
return no_error;
};
var needs_validate = function(el) {
return el.name == 'email' || el.getAttribute('required') !== null;
};
var validate_form = function(e) {
var err = form_to_submit.querySelector('._form_error'), no_error = true;
if (!submitted) {
submitted = true;
for (var i = 0, len = allInputs.length; i < len; i++) {
var input = allInputs[i];
if (needs_validate(input)) {
if (input.type == 'text') {
addEvent(input, 'blur', function() {
this.value = this.value.trim();
validate_field(this, true);
});
addEvent(input, 'input', function() {
validate_field(this, true);
});
} else if (input.type == 'radio' || input.type == 'checkbox') {
(function(el) {
var radios = form_to_submit.elements[el.name];
for (var i = 0; i < radios.length; i++) {
addEvent(radios[i], 'click', function() {
validate_field(el, true);
});
}
})(input);
} else if (input.tagName == 'SELECT') {
addEvent(input, 'change', function() {
validate_field(this, true);
});
} else if (input.type == 'textarea'){
addEvent(input, 'input', function() {
validate_field(this, true);
});
}
}
}
}
remove_tooltips();
for (var i = 0, len = allInputs.length; i < len; i++) {
var elem = allInputs[i];
if (needs_validate(elem)) {
if (elem.tagName.toLowerCase() !== "select") {
elem.value = elem.value.trim();
}
validate_field(elem) ? true : no_error = false;
}
}
if (!no_error && e) {
e.preventDefault();
}
resize_tooltips();
return no_error;
};
addEvent(window, 'resize', resize_tooltips);
addEvent(window, 'scroll', resize_tooltips);
window._old_serialize = null;
if (typeof serialize !== 'undefined') window._old_serialize = window.serialize;
_load_script("//d3rxaij56vjege.cloudfront.net/form-serialize/0.3/serialize.min.js", function() {
window._form_serialize = window.serialize;
if (window._old_serialize) window.serialize = window._old_serialize;
});
var form_submit = function(e) {
e.preventDefault();
if (validate_form()) {
// use this trick to get the submit button & disable it using plain javascript
document.querySelector('#_form_3_submit').disabled = true;
var serialized = _form_serialize(document.getElementById('_form_3_'));
var err = form_to_submit.querySelector('._form_error');
err ? err.parentNode.removeChild(err) : false;
_load_script('https://anandaapothecary.activehosted.com/proc.php?' + serialized + '&jsonp=true');
}
return false;
};
addEvent(form_to_submit, 'submit', form_submit);
})();
You'll receive your quiz results along with occasional updates, news, and training from Ananda Apothecary. We promise to only send you things of real value!