Deprecated: Return type of ameOrderedMap::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\includes\ame-utils.php on line 328 Deprecated: Return type of ameOrderedMap::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\includes\ame-utils.php on line 332 Deprecated: Return type of ameOrderedMap::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\includes\ame-utils.php on line 338 Deprecated: Return type of ameOrderedMap::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\includes\ame-utils.php on line 342 Deprecated: Return type of ameOrderedMap::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\includes\ame-utils.php on line 346 Deprecated: Return type of ameOrderedMap::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\includes\ame-utils.php on line 350 Deprecated: Return type of Wslm_ProductLicense::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\license-manager\ProductLicense.php on line 97 Deprecated: Return type of Wslm_ProductLicense::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\license-manager\ProductLicense.php on line 101 Deprecated: Return type of Wslm_ProductLicense::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\license-manager\ProductLicense.php on line 105 Deprecated: Return type of Wslm_ProductLicense::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\license-manager\ProductLicense.php on line 109 Deprecated: Return type of ameMetaBoxSettings::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\metaboxes\ameMetaBoxSettings.php on line 113 Deprecated: Return type of ameMetaBoxSettings::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\metaboxes\ameMetaBoxSettings.php on line 127 Deprecated: Return type of ameMetaBoxSettings::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\metaboxes\ameMetaBoxSettings.php on line 144 Deprecated: Return type of ameMetaBoxSettings::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\metaboxes\ameMetaBoxSettings.php on line 158 Deprecated: Return type of ameRexCapability::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapability.php on line 51 Deprecated: Return type of ameRexCapability::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapability.php on line 65 Deprecated: Return type of ameRexCapability::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapability.php on line 82 Deprecated: Return type of ameRexCapability::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapability.php on line 96 Deprecated: Return type of ameRexComponentRegistry::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexComponentRegistry.php on line 59 Deprecated: Return type of ameRexComponentRegistry::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexComponentRegistry.php on line 66 Deprecated: Return type of ameRexComponentRegistry::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexComponentRegistry.php on line 73 Deprecated: Return type of ameRexComponentRegistry::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexComponentRegistry.php on line 80 Deprecated: Return type of ameRexComponentRegistry::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexComponentRegistry.php on line 87 Deprecated: Return type of ameRexCapabilitySearchResultSet::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 49 Deprecated: Return type of ameRexCapabilitySearchResultSet::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 21 Deprecated: Return type of ameRexCapabilitySearchResultSet::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 28 Deprecated: Return type of ameRexCapabilitySearchResultSet::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 35 Deprecated: Return type of ameRexCapabilitySearchResultSet::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 42 Deprecated: Return type of ameRexCapabilitySearchResultSet::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 56 Deprecated: Return type of ameRexComponentCapabilityInfo::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 94 Deprecated: Return type of ameRexComponentCapabilityInfo::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 101 Deprecated: Return type of ameRexComponentCapabilityInfo::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 108 Deprecated: Return type of ameRexComponentCapabilityInfo::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\role-editor\ameRexCapabilitySearchResultSet.php on line 115 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\SettingsGroup::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 102 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\SettingsGroup::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 106 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\SettingsGroup::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 110 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\SettingsGroup::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 114 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\SettingsGroup::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 123 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\ActorFeature::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 180 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\ActorFeature::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 184 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\ActorFeature::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 188 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\ActorFeature::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 192 Deprecated: Return type of YahnisElsts\AdminMenuEditor\Configurable\ActorFeature::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in C:\inetpub\wwwroot\km-sensing\wp-content\plugins\admin-menu-editor-pro\extras\modules\tweaks\configurables.php on line 196 How Human Skin Color Evolved Across Different Regions
Deprecated: strcasecmp(): Passing null to parameter #1 ($string1) of type string is deprecated in C:\inetpub\wwwroot\km-sensing\wp-content\themes\uncode\core\inc\wp-bootstrap-navwalker.php on line 107 Deprecated: strcasecmp(): Passing null to parameter #1 ($string1) of type string is deprecated in C:\inetpub\wwwroot\km-sensing\wp-content\themes\uncode\core\inc\wp-bootstrap-navwalker.php on line 107 Deprecated: strcasecmp(): Passing null to parameter #1 ($string1) of type string is deprecated in C:\inetpub\wwwroot\km-sensing\wp-content\themes\uncode\core\inc\wp-bootstrap-navwalker.php on line 107

How Human Skin Color Evolved Across Different Regions


Skin is the human body’s largest organ, serving as our protector from harsh environmental elements. While this protection is a staple in every modern person’s biological makeup, the color of skin is unique to each individual. Until recently, this color difference ranging from very light to very dark skin has been misunderstood. Recent research sheds new light on the driving forces behind the evolution of skin color across different regions – a survival tactic dating back to our early ancestors.

Recent Research Goes Skin Deep

In a study published in the Journal of Human Evolution, researchers from the California Academy of Sciences discussed the correlation between skin color, geographical region, and vitamin absorption.These last two elements may be the driving forces behind the evolution of mankind’s many skin color variations. As this study further investigates, the human body’s response to ultraviolet light (sunlight) greatly depends on skin tone.

Naturally occurring in various foods, folate is a water-soluble B vitamin needed for healthy cell growth in the human body. In a 1978 study, it was found that an hour of intense sunlight can significantly reduce the folate levels of individuals with fair skin. Low folate levels in women during pregnancy can have serious effects on their child at birth, including neural-tube defects. Researchers believe our early ancestors living in tropical environments or near the equator evolved a dark skin tone to protect their folate reserves and guard against the damaging effects of intense sunlight. Although this dark skin tone helped reduce deficiency of folate in our early ancestors, it likely compromised their vitamin D levels as they migrated away from the equator into regions with weaker sunlight.

Vitamin D is an essential vitamin that helps the body absorb calcium and is mainly produced from sunlight. A lack of vitamin D in your body can lead to a number of health problems including rickets and osteoporosis. Because sunlight does not penetrate dark skin as easily, researchers believe fair skin evolved as people migrated into low ultraviolet light regions to help produce adequate amounts of vitamin D. To show this correlation, researchers compared global ultraviolet light measurements to skin color data from more than fifty countries, and found an unmistakable link between low ultraviolet light and fair skin.

The evolution of skin color is believed to have helped humans adapt to various environments around the world and survive from one generation to the next. Early ancestors living in high ultraviolet light regions near the equator developed a dark skin tone to maintain their folate levels, while early ancestors living in low ultraviolet light regions away from the equator developed a fair skin tone to maintain their vitamin D levels. Today, each region is more diverse. With the help of modern science and vitamin supplements, however, we are better equipped to live in environments that may not be ideal for our skin tone.

Does your skin tone match the environment in which you live?

Privacy Preference Center