Unofficial Chrome DevTools profiles for iPhone Duo Outer & Inner responsive testing, screenshots, video capture and QA.
Python
0
2 commits
updated Oct 7, 2026
Unofficial Chrome DevTools custom-device profiles for testing Duo Outer and Duo Inner responsive layouts.
Designed for designers, developers, QA teams and anyone who needs to preview, capture screenshots, record videos or test responsive behaviour without having the physical device available.
| Profile | CSS Viewport | DPR | Target Physical Resolution | Chrome Behaviour |
|---|---|---|---|---|
| iPhone Duo Outer | 466 × 678 | 3 | 1398 × 2034 | Mobile + Touch |
| iPhone Duo Inner | 951 × 669 | 3 | 2853 × 2007 | Desktop (Touch) / Tablet-style |
Important: These are unofficial Chrome DevTools testing presets. The profiles do not emulate physical Apple hardware, Safari/WebKit, hinges, cut-outs or device-specific safe areas.
Chrome DevTools uses CSS pixels for responsive viewport dimensions.
Entering a physical Retina resolution directly into Chrome DevTools can result in a website treating the viewport as an extremely large desktop display.
For example, entering:
2853 × 2007
directly as the browser viewport can cause:
The correct approach is to use the CSS viewport together with the Device Pixel Ratio.
CSS viewport:
466 × 678
Device Pixel Ratio:
3
466 × 3 = 1398
678 × 3 = 2034
CSS viewport:
951 × 669
Device Pixel Ratio:
3
951 × 3 = 2853
669 × 3 = 2007
This allows Chrome to render the website using a realistic responsive viewport while retaining the intended high-density output relationship.
iphone-duo-chrome-devtools-profiles/
│
├── README.md
├── LICENSE
├── CHANGELOG.md
├── .gitignore
│
├── INSTALL_WINDOWS.bat
├── DOCTOR_WINDOWS.bat
├── install_macos_linux.sh
│
├── docs/
│ └── MANUAL_SETUP.md
│
├── profiles/
│ ├── iphone-duo-devtools.json
│ └── reference.json
│
└── tools/
└── duo_profiles.py
Click:
Code → Download ZIP
Extract the ZIP.
The extracted folder will usually be named:
iphone-duo-chrome-devtools-profiles-main
Before closing Chrome, open:
chrome://version/
Find:
Profile Path
Example:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default
The final folder identifies the Chrome profile.
Examples:
Default
Profile 1
Profile 2
Profile 3
Also note the:
Google Chrome version
The Chrome version is useful when troubleshooting because Chrome's internal DevTools configuration can change between releases.
This step is important.
Closing the Chrome window may not completely close Chrome because background processes can remain active.
The installer changes Chrome's profile Preferences file. An active Chrome process can overwrite that file.
Open:
Task Manager
Find every:
chrome.exe
process and choose:
End task
Alternatively, open Command Prompt and run:
taskkill /F /IM chrome.exe
To verify that Chrome is no longer running:
tasklist | findstr /I chrome.exe
If no result appears, Chrome is fully closed.
Inside the extracted repository folder, double-click:
INSTALL_WINDOWS.bat
If multiple Chrome profiles exist, the installer may display:
Chrome profiles found:
1. Default
2. Profile 1
3. Profile 2
4. Profile 3
Choose the profile matching the Profile Path found earlier at:
chrome://version/
Example:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default
means:
Choose: Default
If the installer cannot update the Chrome Preferences file, right-click:
INSTALL_WINDOWS.bat
and select:
Run as administrator
Administrator mode should only be necessary when Windows permissions block access to the Chrome profile.
Reopen Google Chrome.
Open DevTools:
F12
Open DevTools Settings:
F1
Then go to:
Settings → Devices
The following custom devices should now appear:
iPhone Duo Outer
iPhone Duo Inner
Make sure both devices are enabled.
Use:
Ctrl + Shift + M
Select:
iPhone Duo Outer
or:
iPhone Duo Inner
Reload the website after switching profiles.
Width:
466
Height:
678
DPR:
3
Device type:
Mobile
Width:
951
Height:
669
DPR:
3
Device type:
Desktop (touch)
Recommended orientation:
Landscape
If the installer says:
Added: 2
but the profiles do not appear in Chrome, check the following.
Open:
chrome://version/
Check that the selected installer profile matches:
Profile Path
Run:
taskkill /F /IM chrome.exe
Then rerun:
INSTALL_WINDOWS.bat
If Windows permissions are blocking the Preferences file:
Right-click INSTALL_WINDOWS.bat
→ Run as administrator
Open:
F12
→ Settings
→ Devices
Check this page before checking the Device Toolbar dropdown.
A diagnostic helper is included:
DOCTOR_WINDOWS.bat
Use this only when something is not working.
The diagnostic tool checks:
Chrome running state
Chrome profile
Chrome Preferences path
Duo profile presence
Custom-device data
Configuration validity
The diagnostic tool does not install additional software.
Typical Chrome profile root:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\
Default profile:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default
Preferences file:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default\Preferences
Additional profiles:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Profile 1\Preferences
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Profile 2\Preferences
The installer modifies the selected Chrome profile only.
From GitHub select:
Code → Download ZIP
The ZIP will normally download into:
Downloads
After extraction, GitHub usually names the folder:
iphone-duo-chrome-devtools-profiles-main
Before closing Chrome, open:
chrome://version/
Find:
Profile Path
Example:
/Users/YourName/Library/Application Support/Google/Chrome/Default
The final folder identifies the Chrome profile:
Default
Profile 1
Profile 2
...
Also note the:
Google Chrome version
Open:
Applications
→ Utilities
→ Terminal
Then run:
cd ~/Downloads
Check the Downloads folder:
ls
Look for:
iphone-duo-chrome-devtools-profiles-main
Run:
cd iphone-duo-chrome-devtools-profiles-main
Then:
ls
The output should contain files such as:
README.md
install_macos_linux.sh
tools
profiles
docs
Run:
chmod +x install_macos_linux.sh
Run:
pkill -x "Google Chrome"
Nothing appearing afterward is normal.
This command ensures that Chrome and remaining background Chrome processes are closed before the Preferences file is changed.
Run:
./install_macos_linux.sh
The complete command sequence is:
cd ~/Downloads
ls
cd iphone-duo-chrome-devtools-profiles-main
ls
chmod +x install_macos_linux.sh
pkill -x "Google Chrome"
./install_macos_linux.sh
Use:
ls
and copy the exact folder name.
For example:
iphone-duo-chrome-devtools-profiles-main-2
would require:
cd iphone-duo-chrome-devtools-profiles-main-2
If macOS returns:
Permission denied
run:
bash install_macos_linux.sh
instead.
If multiple profiles are detected, choose the profile matching the path found earlier at:
chrome://version/
Example:
/Users/YourName/Library/Application Support/Google/Chrome/Default
means:
Default
Reopen Google Chrome.
Open DevTools:
⌘ Command + ⌥ Option + I
Open Device Toolbar:
⌘ Command + Shift + M
Open DevTools Settings:
F1
Then go to:
Settings → Devices
The following custom devices should appear:
iPhone Duo Outer
iPhone Duo Inner
Typical Chrome profile root:
~/Library/Application Support/Google/Chrome/
Default profile:
~/Library/Application Support/Google/Chrome/Default
Preferences file:
~/Library/Application Support/Google/Chrome/Default/Preferences
Additional profiles:
~/Library/Application Support/Google/Chrome/Profile 1/Preferences
~/Library/Application Support/Google/Chrome/Profile 2/Preferences
If the profiles do not appear:
Fully close Chrome again:
pkill -x "Google Chrome"
Return to the repository:
cd ~/Downloads/iphone-duo-chrome-devtools-profiles-main
Run the installer again:
./install_macos_linux.sh
If direct execution fails:
bash install_macos_linux.sh
Then reopen Chrome and check:
DevTools
→ Settings
→ Devices
If automatic installation does not work on a particular Chrome version, both profiles can be created manually.
Open:
Chrome DevTools
→ Settings
→ Devices
→ Add custom device
Enter:
Device:
iPhone Duo Outer
Width:
466
Height:
678
Device Pixel Ratio:
3
Device Type:
Mobile
Recommended form factor:
Mobile
Enter:
Device:
iPhone Duo Inner
Width:
951
Height:
669
Device Pixel Ratio:
3
Device Type:
Desktop (touch)
Recommended form factor:
Tablet
Recommended orientation:
Landscape
The following fields can normally remain empty:
Full browser version
Platform
Platform version
Architecture
Device model
These fields are only necessary when testing a website that specifically relies on User-Agent Client Hints.
After installation:
Open the website that needs testing.
Open Chrome DevTools.
F12
Device Toolbar:
Ctrl + Shift + M
Open DevTools:
⌘ + ⌥ + I
Device Toolbar:
⌘ + Shift + M
Select:
iPhone Duo Outer
or:
iPhone Duo Inner
Reload the page after changing profiles.
For screenshots:
Open Device Toolbar and choose the required Duo profile.
Open Chrome Command Menu.
Ctrl + Shift + P
⌘ + Shift + P
Search:
Capture screenshot
This makes the profiles useful for:
UI screenshots
A/B testing
Marketing creative
QA documentation
Product demos
Video capture
Responsive design reviews
Close Chrome completely.
Open Command Prompt inside the repository folder and run:
python tools\duo_profiles.py remove
or:
py -3 tools\duo_profiles.py remove
Close Chrome:
pkill -x "Google Chrome"
Enter the repository folder:
cd ~/Downloads/iphone-duo-chrome-devtools-profiles-main
Run:
python3 tools/duo_profiles.py remove
Reopen Chrome afterward.
List installed custom devices:
py -3 tools\duo_profiles.py list
Run diagnostics:
py -3 tools\duo_profiles.py doctor
Remove Duo devices:
py -3 tools\duo_profiles.py remove
List installed custom devices:
python3 tools/duo_profiles.py list
Run diagnostics:
python3 tools/duo_profiles.py doctor
Remove Duo devices:
python3 tools/duo_profiles.py remove
Chrome stores custom DevTools devices inside the selected profile's:
Preferences
file.
The relevant preference is:
devtools.preferences.custom-emulated-device-list
The installer:
Finds the selected Chrome profile
Reads existing custom devices
Creates a Preferences backup
Adds or updates the Duo profiles
Preserves unrelated custom devices
Writes the updated Preferences file
Verifies that the Duo profiles exist on disk
Before the Preferences file is changed, the installer creates a timestamped backup.
Example:
Preferences.duo-backup-20261007-142300
This allows the original Chrome configuration to be recovered if necessary.
Chrome currently does not provide an official:
Import Custom Devices
function for custom DevTools device profiles.
The automatic installer therefore modifies Chrome's internal DevTools Preferences configuration.
Because this is an internal Chrome setting:
Final QA should still be performed on physical hardware whenever possible.
When reporting a problem, include:
Operating system:
Chrome version:
Chrome Profile Path:
Installer output:
Whether Chrome was fully closed:
Whether the profiles appear in Settings → Devices:
Chrome version and Profile Path are available from:
chrome://version/
Contributions and improvements are welcome.
Useful contributions include:
Chrome compatibility updates
Improved installers
Verified viewport information
Safe-area information
macOS improvements
Windows improvements
Linux improvements
Documentation fixes
Pull requests can be submitted through GitHub.
This project is unofficial.
The presets are intended for responsive design and development testing only.
No claim is made that the profiles reproduce physical Apple hardware, Safari/WebKit behaviour or future production device specifications exactly.
MIT License.
Free to use, modify, redistribute and share.
Unofficial Chrome DevTools profiles for iPhone Duo Outer & Inner responsive testing, screenshots, video capture and QA.
Python
0
2 commits
updated Oct 7, 2026
Unofficial Chrome DevTools custom-device profiles for testing Duo Outer and Duo Inner responsive layouts.
Designed for designers, developers, QA teams and anyone who needs to preview, capture screenshots, record videos or test responsive behaviour without having the physical device available.
| Profile | CSS Viewport | DPR | Target Physical Resolution | Chrome Behaviour |
|---|---|---|---|---|
| iPhone Duo Outer | 466 × 678 | 3 | 1398 × 2034 | Mobile + Touch |
| iPhone Duo Inner | 951 × 669 | 3 | 2853 × 2007 | Desktop (Touch) / Tablet-style |
Important: These are unofficial Chrome DevTools testing presets. The profiles do not emulate physical Apple hardware, Safari/WebKit, hinges, cut-outs or device-specific safe areas.
Chrome DevTools uses CSS pixels for responsive viewport dimensions.
Entering a physical Retina resolution directly into Chrome DevTools can result in a website treating the viewport as an extremely large desktop display.
For example, entering:
2853 × 2007
directly as the browser viewport can cause:
The correct approach is to use the CSS viewport together with the Device Pixel Ratio.
CSS viewport:
466 × 678
Device Pixel Ratio:
3
466 × 3 = 1398
678 × 3 = 2034
CSS viewport:
951 × 669
Device Pixel Ratio:
3
951 × 3 = 2853
669 × 3 = 2007
This allows Chrome to render the website using a realistic responsive viewport while retaining the intended high-density output relationship.
iphone-duo-chrome-devtools-profiles/
│
├── README.md
├── LICENSE
├── CHANGELOG.md
├── .gitignore
│
├── INSTALL_WINDOWS.bat
├── DOCTOR_WINDOWS.bat
├── install_macos_linux.sh
│
├── docs/
│ └── MANUAL_SETUP.md
│
├── profiles/
│ ├── iphone-duo-devtools.json
│ └── reference.json
│
└── tools/
└── duo_profiles.py
Click:
Code → Download ZIP
Extract the ZIP.
The extracted folder will usually be named:
iphone-duo-chrome-devtools-profiles-main
Before closing Chrome, open:
chrome://version/
Find:
Profile Path
Example:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default
The final folder identifies the Chrome profile.
Examples:
Default
Profile 1
Profile 2
Profile 3
Also note the:
Google Chrome version
The Chrome version is useful when troubleshooting because Chrome's internal DevTools configuration can change between releases.
This step is important.
Closing the Chrome window may not completely close Chrome because background processes can remain active.
The installer changes Chrome's profile Preferences file. An active Chrome process can overwrite that file.
Open:
Task Manager
Find every:
chrome.exe
process and choose:
End task
Alternatively, open Command Prompt and run:
taskkill /F /IM chrome.exe
To verify that Chrome is no longer running:
tasklist | findstr /I chrome.exe
If no result appears, Chrome is fully closed.
Inside the extracted repository folder, double-click:
INSTALL_WINDOWS.bat
If multiple Chrome profiles exist, the installer may display:
Chrome profiles found:
1. Default
2. Profile 1
3. Profile 2
4. Profile 3
Choose the profile matching the Profile Path found earlier at:
chrome://version/
Example:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default
means:
Choose: Default
If the installer cannot update the Chrome Preferences file, right-click:
INSTALL_WINDOWS.bat
and select:
Run as administrator
Administrator mode should only be necessary when Windows permissions block access to the Chrome profile.
Reopen Google Chrome.
Open DevTools:
F12
Open DevTools Settings:
F1
Then go to:
Settings → Devices
The following custom devices should now appear:
iPhone Duo Outer
iPhone Duo Inner
Make sure both devices are enabled.
Use:
Ctrl + Shift + M
Select:
iPhone Duo Outer
or:
iPhone Duo Inner
Reload the website after switching profiles.
Width:
466
Height:
678
DPR:
3
Device type:
Mobile
Width:
951
Height:
669
DPR:
3
Device type:
Desktop (touch)
Recommended orientation:
Landscape
If the installer says:
Added: 2
but the profiles do not appear in Chrome, check the following.
Open:
chrome://version/
Check that the selected installer profile matches:
Profile Path
Run:
taskkill /F /IM chrome.exe
Then rerun:
INSTALL_WINDOWS.bat
If Windows permissions are blocking the Preferences file:
Right-click INSTALL_WINDOWS.bat
→ Run as administrator
Open:
F12
→ Settings
→ Devices
Check this page before checking the Device Toolbar dropdown.
A diagnostic helper is included:
DOCTOR_WINDOWS.bat
Use this only when something is not working.
The diagnostic tool checks:
Chrome running state
Chrome profile
Chrome Preferences path
Duo profile presence
Custom-device data
Configuration validity
The diagnostic tool does not install additional software.
Typical Chrome profile root:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\
Default profile:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default
Preferences file:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Default\Preferences
Additional profiles:
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Profile 1\Preferences
C:\Users\YourName\AppData\Local\Google\Chrome\User Data\Profile 2\Preferences
The installer modifies the selected Chrome profile only.
From GitHub select:
Code → Download ZIP
The ZIP will normally download into:
Downloads
After extraction, GitHub usually names the folder:
iphone-duo-chrome-devtools-profiles-main
Before closing Chrome, open:
chrome://version/
Find:
Profile Path
Example:
/Users/YourName/Library/Application Support/Google/Chrome/Default
The final folder identifies the Chrome profile:
Default
Profile 1
Profile 2
...
Also note the:
Google Chrome version
Open:
Applications
→ Utilities
→ Terminal
Then run:
cd ~/Downloads
Check the Downloads folder:
ls
Look for:
iphone-duo-chrome-devtools-profiles-main
Run:
cd iphone-duo-chrome-devtools-profiles-main
Then:
ls
The output should contain files such as:
README.md
install_macos_linux.sh
tools
profiles
docs
Run:
chmod +x install_macos_linux.sh
Run:
pkill -x "Google Chrome"
Nothing appearing afterward is normal.
This command ensures that Chrome and remaining background Chrome processes are closed before the Preferences file is changed.
Run:
./install_macos_linux.sh
The complete command sequence is:
cd ~/Downloads
ls
cd iphone-duo-chrome-devtools-profiles-main
ls
chmod +x install_macos_linux.sh
pkill -x "Google Chrome"
./install_macos_linux.sh
Use:
ls
and copy the exact folder name.
For example:
iphone-duo-chrome-devtools-profiles-main-2
would require:
cd iphone-duo-chrome-devtools-profiles-main-2
If macOS returns:
Permission denied
run:
bash install_macos_linux.sh
instead.
If multiple profiles are detected, choose the profile matching the path found earlier at:
chrome://version/
Example:
/Users/YourName/Library/Application Support/Google/Chrome/Default
means:
Default
Reopen Google Chrome.
Open DevTools:
⌘ Command + ⌥ Option + I
Open Device Toolbar:
⌘ Command + Shift + M
Open DevTools Settings:
F1
Then go to:
Settings → Devices
The following custom devices should appear:
iPhone Duo Outer
iPhone Duo Inner
Typical Chrome profile root:
~/Library/Application Support/Google/Chrome/
Default profile:
~/Library/Application Support/Google/Chrome/Default
Preferences file:
~/Library/Application Support/Google/Chrome/Default/Preferences
Additional profiles:
~/Library/Application Support/Google/Chrome/Profile 1/Preferences
~/Library/Application Support/Google/Chrome/Profile 2/Preferences
If the profiles do not appear:
Fully close Chrome again:
pkill -x "Google Chrome"
Return to the repository:
cd ~/Downloads/iphone-duo-chrome-devtools-profiles-main
Run the installer again:
./install_macos_linux.sh
If direct execution fails:
bash install_macos_linux.sh
Then reopen Chrome and check:
DevTools
→ Settings
→ Devices
If automatic installation does not work on a particular Chrome version, both profiles can be created manually.
Open:
Chrome DevTools
→ Settings
→ Devices
→ Add custom device
Enter:
Device:
iPhone Duo Outer
Width:
466
Height:
678
Device Pixel Ratio:
3
Device Type:
Mobile
Recommended form factor:
Mobile
Enter:
Device:
iPhone Duo Inner
Width:
951
Height:
669
Device Pixel Ratio:
3
Device Type:
Desktop (touch)
Recommended form factor:
Tablet
Recommended orientation:
Landscape
The following fields can normally remain empty:
Full browser version
Platform
Platform version
Architecture
Device model
These fields are only necessary when testing a website that specifically relies on User-Agent Client Hints.
After installation:
Open the website that needs testing.
Open Chrome DevTools.
F12
Device Toolbar:
Ctrl + Shift + M
Open DevTools:
⌘ + ⌥ + I
Device Toolbar:
⌘ + Shift + M
Select:
iPhone Duo Outer
or:
iPhone Duo Inner
Reload the page after changing profiles.
For screenshots:
Open Device Toolbar and choose the required Duo profile.
Open Chrome Command Menu.
Ctrl + Shift + P
⌘ + Shift + P
Search:
Capture screenshot
This makes the profiles useful for:
UI screenshots
A/B testing
Marketing creative
QA documentation
Product demos
Video capture
Responsive design reviews
Close Chrome completely.
Open Command Prompt inside the repository folder and run:
python tools\duo_profiles.py remove
or:
py -3 tools\duo_profiles.py remove
Close Chrome:
pkill -x "Google Chrome"
Enter the repository folder:
cd ~/Downloads/iphone-duo-chrome-devtools-profiles-main
Run:
python3 tools/duo_profiles.py remove
Reopen Chrome afterward.
List installed custom devices:
py -3 tools\duo_profiles.py list
Run diagnostics:
py -3 tools\duo_profiles.py doctor
Remove Duo devices:
py -3 tools\duo_profiles.py remove
List installed custom devices:
python3 tools/duo_profiles.py list
Run diagnostics:
python3 tools/duo_profiles.py doctor
Remove Duo devices:
python3 tools/duo_profiles.py remove
Chrome stores custom DevTools devices inside the selected profile's:
Preferences
file.
The relevant preference is:
devtools.preferences.custom-emulated-device-list
The installer:
Finds the selected Chrome profile
Reads existing custom devices
Creates a Preferences backup
Adds or updates the Duo profiles
Preserves unrelated custom devices
Writes the updated Preferences file
Verifies that the Duo profiles exist on disk
Before the Preferences file is changed, the installer creates a timestamped backup.
Example:
Preferences.duo-backup-20261007-142300
This allows the original Chrome configuration to be recovered if necessary.
Chrome currently does not provide an official:
Import Custom Devices
function for custom DevTools device profiles.
The automatic installer therefore modifies Chrome's internal DevTools Preferences configuration.
Because this is an internal Chrome setting:
Final QA should still be performed on physical hardware whenever possible.
When reporting a problem, include:
Operating system:
Chrome version:
Chrome Profile Path:
Installer output:
Whether Chrome was fully closed:
Whether the profiles appear in Settings → Devices:
Chrome version and Profile Path are available from:
chrome://version/
Contributions and improvements are welcome.
Useful contributions include:
Chrome compatibility updates
Improved installers
Verified viewport information
Safe-area information
macOS improvements
Windows improvements
Linux improvements
Documentation fixes
Pull requests can be submitted through GitHub.
This project is unofficial.
The presets are intended for responsive design and development testing only.
No claim is made that the profiles reproduce physical Apple hardware, Safari/WebKit behaviour or future production device specifications exactly.
MIT License.
Free to use, modify, redistribute and share.