
﻿ Apple and the Environment Frequently Asked Questions Q : How does Apple review the company’s progress and status regarding its environmental impact ? A : Apple’s Executive Team is responsible for setting and implementing environmental policies . This group of the company’s most senior executives is advised by teams from across Apple , including environmental engineering , product development , operations , facilities , and supplier responsibility . Apple’s climate change strategy is built into all facilities development plans and plays an important role in the product development process . In 2009 , at the direction of the Executive Team , Apple became the first company in the electronics industry to report its entire carbon footprint including the impact of its products on the environment through consumer use . In addition to providing consumers with an unprecedented level of detail and transparency on which to base their purchasing decisions , measuring the company’s carbon footprint helps the company identify areas where it can make the most significant reductions . We understand that the vast majority of greenhouse gas emissions ( up to 98 percent ) come from the product life cycle , which is why decisions about the environmental attributes of our products are an integral aspect of all decisions related to the design and manufacture of those products . The same is true of all the environmental decisions for our facilities . Our integrated approach means that decisions about environmental issues are reviewed at the highest levels of the company . This structure has been an important factor in Apple’s success , particularly in the area of environmental responsibility . Executive Team members regularly review each new product during its development , focusing on material and design choices , the supply chain , packaging , and product energy efficiency . Each of these areas has a direct impact on our environmental footprint . This strategy , which we’ve been using for well over two decades , has yielded the most environmentally forward-looking product designs in our industry . Every product we offer meets the ENERGY STAR guidelines for energy efficiency , is free of harmful toxins , and is made of highly recyclable materials . Our facilities and operations teams also regularly review our programs and investments to reduce carbon emissions with Executive Team members . The results of these reviews include increased use of green power , new technology investments , commute programs , and conservation . The efforts of this team have produced the highest product recycling rate in our industry . Apple delivers important environmental attributes across all the company’s products and product families . Not only does Apple deliver where others have only promised to do so in the future , Apple has delivered where it’s most meaningful . The Apple Executive Team is committed to our environmental strategy : to reduce our carbon footprint , to remove toxins , and to report on the environmental impact of every product we make so that our customers can measure our progress . We are also committed to reporting our global corporate emissions annually and to reporting at the product level with each new product introduction . Q : What is Life Cycle Assessment ( LCA ) ? A : LCA is a process of evaluating the effects that a product has on the environment throughout its life cycle . The objective of completing a full life cycle analysis is to improve resource efficiency while reducing the environmental impact of all activities required to manufacture , distribute , use , and dispose of a product . Cradle-to-grave life cycle assessments , for instance , begin with the extraction of raw materials from the earth , their transformation into finished materials , the manufacturing of materials into parts and products , transportation to end users , the energy consumed during use , and ultimately recycling . During each of these phases , activities occur that use materials and energy , generating waste and emissions . Life cycle assessment is the process used to accurately measure the emissions associated with each phase of these activities . LCA results are often categorized in several ways , including global warming potential , acidification , eutrophication , tropospheric ozone creation , and stratospheric ozone depletion . The procedures followed for life cycle assessment are defined as part of the internationally recognized ISO 14000 environmental management standards : in ISO 14040:2006 and 14044:2006 . Successful implementations of LCAs have been achieved in many industries , including automobile , airline , and consumer goods companies . For complex products and processes composed of several thousand materials , the analysis requires dedicated software applications designed to accurately capture the environmental impact of very specific processes . Software tools provide an efficient and objective assessment of the environmental impacts a company measures by using third-party databases created and updated by independent industrial engineers who are experts in specific manufacturing processes . Apple has found that a combination of data collected directly from our internal and supplier processes as well as independent third-party data sets achieves the most accurate results . Q : How does Apple use LCA ? A : Apple uses five steps when conducting a product LCA : 1. Data collection starts with measuring the power consumed by a product while it is running under a simulated use scenario . Different scenarios are used for different product lines . For example , we assume a four-year average use period for Mac computers . To be conservative , we also assume an office scenario use pattern for every computer shipped and apply that use pattern to 365 days of use per year . For handheld products , such as iPod and iPhone , we assume a three-year use period . For these products , charging patterns are defined according to a “ power user , ” which we define as intense daily use over the three-year period . More information on our product power modes is provided in our Product Environmental Reports . 2. The second step is a part-by-part measurement of the entire product . This helps us accurately measure the size and weight of the components and materials in the product . Since a single product can contain several hundred parts , this step is supported by double-checking individual part details with the product’s bill of materials . We include material and component yield loss during production as part of this process . We also account for the transportation of materials between manufacturing sites . Production emissions for external accessories , such as keyboards and mice , and packaging are also included in this step . 3. The third step assesses emissions from transportation of finished products to sales regions . Data is collected on single units and multipack units of product shipments as they are transported over land , by sea , and by air . The majority of the product transportation emissions are associated with getting the products from Asia to sales distribution hubs in Europe , Asia , and the Americas . The final leg of transport between regional hubs and individual customers is accounted for using an overall adjustment factor . 4. The last step of the product life cycle measurement is the collection and recycling of the product when it reaches the end of its useful life . Transportation between customers and recycling plants along with the treatment steps carried out by the recycler to obtain metal , plastic , and glass material streams are all accounted for in this calculation . Subsequent processing and smelting steps are not included as these are considered stages of production and not end-of-life processing . 5. After we collect all the data , the final step is to run the product data model in our LCA tool and compile detailed results for GHG emissions as they relate to the product . The data and life cycle model used in the tool are checked for quality and accuracy by the Fraunhofer Institute in Germany . Q : Does Apple index its environmental performance data using Global Reporting Initiative ( GRI ) Sustainability Reporting Guidelines ( G3 ) ? A : Yes . Environmental performance data covering energy and water consumption , greenhouse gas emissions , and waste production is provided in the 2009 Facilities Report ( PDF ) . Q : What is ISO 14001 , and is Apple ISO 14001 certified ? A : ISO 14001 is a voluntary international standard that establishes the requirements for an organization’s environmental management system ( EMS ) . The ISO 14001 standard helps a company manage the environmental impact of its operations in a systematic way that is integrated with overall business management processes . Apple first achieved ISO 14001 certification for a manufacturing site in 1996. Q : Does Apple ban environmentally sensitive substances ? A : Yes . Apple’s Regulated Substances Specification details a broad range of substances that are restricted or banned from use in Apple products , packaging , and manufacturing . Q : Do Apple products contain lead ? A : Apple is in compliance with the European RoHS Directive , which restricts the use of lead and other substances . As a result of our precautionary approach to substances , Apple phased out lead in plastic parts , paint , and packaging material long before the RoHS Directive came into effect . Q : What are Apple’s restrictions on brominated flame retardant-free ( BFR-free ) and polyvinyl chloride-free ( PVC-free ) products ? A : Apple defines a material as BFR-free and PVC-free if it contains less than 900 parts per million ( ppm ) of bromine and chlorine . The 900-ppm limit is one of the strictest in the electronics industry and a concentration lower than the ban on lead in the European RoHS Directive . Since BFRs and PVC need to be present in much higher quantities to be effective , most materials that contain less than 900-ppm bromine and chlorine do not have any detectable levels of bromine or chlorine present . Q : Which products are covered by Apple’s BFR-free and PVC-free transition ? A : Apple’s phaseout of BFRs and PVC covers all parts of new Apple product designs manufactured after December 31 , 2008. The iPod nano , iPod classic , and iPod touch are examples of products that are BFR-free and PVC-free . While Apple’s phaseout will cover the vast majority of products and components , older product designs , replacement parts , and accessories for older product designs may not be fully BFR-free and PVC-free . Q : What is REACH , and how is Apple complying with the REACH regulation ? A : The Registration , Evaluation , Authorization and Restriction of Chemicals Regulation EC 1907/2007 , commonly referred to as REACH , is a European regulation on chemicals and their safe use . With the publication of the candidate list for authorization on October 28 , 2008 , the European Chemicals Agency identified a set of substances of very high concern ( SVHC ) that manufacturers must disclose to customers if used in their products above 0.1 percent . Based on the current version of the candidate list for authorization , Apple products do not contain SVHC above 0.1 percent , with the exception of AC power cords . AC power cords used in Apple notebooks , desktops , servers , displays , Apple TV , AirPort Extreme , Time Capsule , and power adapters are made of polyvinyl chloride ( PVC ) that contains the SVHC bis 2-ethyl(hexyl)phthalate , also known as DEHP . Apple is in the final stages of developing and certifying PVC-free AC power cords that will also be free of DEHP . Q : Does Apple use ozone-depleting substances ? A : No ozone-depleting substances ( ODCs ) are used in any processes to manufacture components , materials , or product packaging materials used by Apple , as stipulated by the Montreal Protocol on Substances That Deplete the Ozone Layer . Q : Does Apple have an Environmental Health and Safety Policy ? A : Apple is committed to protecting the environment , health , and safety of our employees , customers , and the global communities in which we operate . For more information , read our Environmental Health and Safety Policy statement ( PDF ) . Q : What happens to computers when they are recycled ? A : When you recycle with Apple , your used equipment is disassembled , and key components that can be reused are removed . Glass and metal can be reprocessed for use in new products . A majority of the plastics can be pelletized into a raw secondary material . With materials reprocessing and component reuse , Apple often achieves a 90 percent recovery rate by weight of the original product . Learn more about the Apple Recycling Program 