A powerful native macOS application for converting, splitting, and merging JSON, JSONL, and CSV files.
Download: FileShift for Apple Silicon (M1/M2/M3/M4)
First Launch: Right-click the app and select "Open" to bypass the security warning (see Installation for details)
- Batch Processing: Convert multiple JSON files to CSV at once
- Smart Schema Analysis: Automatically analyzes and compares schemas across files
- Multiple Merge Strategies:
- Smart Auto: Fields present in 70%+ of files
- All Available: Union of all fields across files
- Common Only: Fields present in ALL files
- Most Complete File: Use the file with most fields as template
- Keep Separate: Individual CSV files with their own schemas
- Nested Field Support: Handles complex nested JSON structures
- Split by Number of Files: Divide a file into N equal parts
- Split by Rows: Create files with a specific number of records each
- Split by Size: Create files of approximately N kilobytes each
- Format Flexibility: Input can be JSON, JSONL, or CSV; output format is selectable
- Combine Multiple Files: Merge any number of files into one
- Mixed Format Support: Merge JSON, JSONL, and CSV files together
- Schema Strategies:
- Union: Include all fields from all files
- Intersection: Only include fields common to all files
- First File: Use the schema from the first file
- Output Format Selection: Choose JSON, JSONL, or CSV output
- Native macOS Interface: Built with PyQt6 for a smooth, native experience
- Real-time Progress: Track operations with progress bars and status logs
- Memory Efficient: Streaming processing for large files
| Mac Type | Download Link |
|---|---|
| Apple Silicon (M1/M2/M3/M4) | Download DMG |
All Releases: View all versions on the Releases page
- Download the DMG file
- Double-click the DMG to mount it
- Drag "FileShift" to your Applications folder
- First time running: The app will show a security warning because it's not signed with an Apple Developer certificate ($99/year). See below for how to bypass this.
macOS Gatekeeper blocks apps without Apple Developer certificates. Choose one of the methods below:
- Right-click (or Control-click) on FileShift.app in Finder
- Select Open from the context menu
- Click Open in the dialog that appears
This presents a different dialog that allows you to open the app directly.
-
Try to open the app normally (double-click) — You'll see a warning. Click Done (not "Move to Trash").
-
Open System Settings → Privacy & Security
-
Scroll down to the Security section. You'll see:
"FileShift.app" was blocked from use because it is not from an identified developer.
Click Open Anyway
-
Enter your password if prompted, then click Open Anyway again in the confirmation dialog.
If the above methods don't work, remove the quarantine flag using Terminal:
xattr -d com.apple.quarantine /Applications/FileShift.appThen open the app normally.
Running from source bypasses Gatekeeper entirely:
git clone https://github.com/simplifi/FileShift.git
cd FileShift
python -m venv .venv
source .venv/bin/activate
pip install PyQt6
python -m srcAfter completing any method once, the app will open normally without warnings.
- Go to the Convert tab
- Click "Browse for JSON Files" to select one or more JSON files
- The app automatically analyzes the structure of your files
- Select a merge strategy for handling different schemas
- Click "Convert All Files" and choose an output directory
- Go to the Split tab
- Select a single input file (JSON, JSONL, or CSV)
- Choose a split mode:
- By number of files: Split into N equal parts
- By rows per file: Each output file has N records
- By file size: Each output file is approximately N KB
- Select output format and directory
- Click "Split File"
- Go to the Merge tab
- Select multiple input files (can be mixed formats)
- Choose a schema strategy:
- Union: All fields from all files
- Intersection: Only common fields
- First file: Use first file's schema
- Select output format and file path
- Click "Merge Files"
- macOS 11 or later
- Python 3.9 or later
- PyQt6
# Clone the repository
git clone https://github.com/simplifi/FileShift.git
cd FileShift
# Create virtual environment
python -m venv .venv
source .venv/bin/activate
# Install dependencies
pip install PyQt6 pyinstaller
# Build the app
pyinstaller --clean fileshift.specThe built application will be in dist/FileShift.app
# Create virtual environment
uv venv
source .venv/bin/activate
# Install dependencies
uv pip install -e ".[dev]"
# Run the application
python -m src
# Run tests
pytestFileShift/
├── src/
│ ├── gui.py # Main GUI application
│ ├── main.py # Entry point
│ └── converters/ # Core conversion library
│ ├── base.py # Base classes and types
│ ├── handlers.py # Format handlers (JSON, JSONL, CSV)
│ └── operations.py # Split and merge operations
├── tests/ # Test suite
├── packaging/
│ └── fileshift.spec # PyInstaller build spec
└── pyproject.toml # Project configuration
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with PyQt6
- Packaged with PyInstaller
For issues, questions, or contributions, please visit the GitHub repository.